WO2001029703A1 - Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique - Google Patents

Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique Download PDF

Info

Publication number
WO2001029703A1
WO2001029703A1 PCT/FR2000/002865 FR0002865W WO0129703A1 WO 2001029703 A1 WO2001029703 A1 WO 2001029703A1 FR 0002865 W FR0002865 W FR 0002865W WO 0129703 A1 WO0129703 A1 WO 0129703A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
data
level
order
columns
Prior art date
Application number
PCT/FR2000/002865
Other languages
English (en)
Inventor
Jean-François Le Goff
Thierry Poullain
Eric Poullain
Original Assignee
E-Sual
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 E-Sual filed Critical E-Sual
Priority to EP00968042A priority Critical patent/EP1222575A1/fr
Priority to AU78006/00A priority patent/AU7800600A/en
Publication of WO2001029703A1 publication Critical patent/WO2001029703A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/26Visual data mining; Browsing structured data

Definitions

  • the present invention relates generally to the consultation of computer databases.
  • the presentation of the data is generally carried out by means of a two-dimensional table, each row relating to a datum, and each column containing in the row considered an attribute or property of this datum.
  • This approach has major drawbacks as soon as the set of data presented exceeds a few tens, and becomes humanly impractical with a few hundred data.
  • some users will be interested in certain properties of the data and not others, this interest being able to vary very quickly over time, even for the same user.
  • Prioritization techniques make it possible, in a known manner, to classify data into categories and sub-categories, and to enable information to be retrieved, various groupings, via a query language, such as SQL ("Syntax Query Language") ) will allow the informed user to make various classifications that suit him.
  • SQL Structure Query Language
  • This approach is unfortunately the work of a specialist, very unsuitable for the general public who is generally not able to easily and quickly build an SQL or other query. This is why the user generally only has a limited number of types of predetermined requests, to which he has no access allowing them to be modified.
  • the first is related to the amount of information sent from the server to the client.
  • the second is related to the access of databases present in the server, which proves to be extremely expensive in processor time and in RAM, which slows down the response times considerably in a client / server environment when the number of clients during the session is high.
  • the present invention aims to overcome these limitations of the state of the art and to propose a method which makes it possible to organize a data table in a hierarchical manner on the basis of the content of the columns of the table. More specifically, the object of the invention is to reorganize the hierarchy of the data presented, by assigning any order to the columns of the table, this in an interactive and autonomous manner, for example by presenting these data hierarchically by drop-down menus.
  • the present invention provides a method for creating a variable hierarchical structure allowing a user to trigger by successive choice an action among a plurality of actions in a computer system, the method being characterized in that it comprises the steps consisting in: :
  • a tree structure of nodes comprising a number of node levels equal to the number of key columns of said subset increases by one, each node containing at least one item corresponding to a category datum or action of the data table and an identifier, a first level of the node structure containing a single node, a plurality of headings of which correspond to a plurality of category data present in the category column of the data table appearing in first in the order of travel, and each level following the first level containing, respectively attached to the node or to each node of the level immediately below, a set of nodes equal to the number of headings in said node to which they are attached, and each identifier of higher level node to the first level being built by a combination of the identifier of the node of the level immediately below to which it is attached and of an item contained in this same node.
  • the method further comprises the step of selectively displaying selection menus using the headings contained in the various nodes. * the method further comprises the step of displaying a representation of the tree structure with its headings.
  • each node contains one or more elements, each element containing an item, data associated with a node of lower level, and data associated with a node of higher level.
  • the data of the elements contained in this node include data indicating that there is no lower level node.
  • the data of the elements contained in this node include a data indicating that there is no node of higher level.
  • the method comprises an intermediate step consisting, for each node, in developing a character string constituted by the concatenation of the contents of the data table for a given row and in an order of columns indicated by the defined order.
  • the process further comprises the steps consisting: - for each new character string developed, to associate with this string a level node immediately lower, and memorize the chain / knot pair,
  • FIGS. 1a and 1b schematically illustrate two types of path of a tree structure
  • FIG. 2 is a flow diagram illustrating an algorithm for generating names for a row of a table according to a given order
  • FIG. 3 is a flow diagram illustrating a data organization algorithm using the generation algorithm of FIG.
  • FIGS. 4a to 4c illustrate the content of the nodes obtained with the algorithm of FIG. 3 for the four products of a given data table further on by way of example
  • FIGS. 5a to 5d illustrate the course of the menus for four possible classifications defining four modes of consultation.
  • a data table in the context of the present invention, is a two-dimensional table, each row corresponding to a datum, and each column of the row considered containing a characteristic or property of this datum. It should be noted here that the method for storing this information is not to be considered here.
  • the data table can come from a text or binary file, result from the execution of a local or remote procedure, be directly constituted from a table belonging to a database, or even result from a request for SQL type
  • a data table in the context used here, is said to be homogeneous if all the characteristics of one data exist for all the other data. For example, if a characteristic is named "Color", and if all the data presented has a non-empty "Color" characteristic, then the table is homogeneous. In the case where a data table is not homogeneous, it is possible to make it homogeneous by extending the definition of one or more characteristics.
  • the value "No” can be assigned in the case where it does not make sense. Similarly, for a numerical data, the value "0" can be used as a particular marker.
  • a hash table allows data to be associated with a value, thus creating pairs (key, value).
  • a hash table is generally used in the context of databases, allowing rapid, even immediate, access to one or more columns considered important, and generally called keys. This organization promotes the speed of execution linked to a search, to the detriment of the space used to store the data. It makes it possible to answer the questions "does the data X exist?" "Or” what is the value of the Y key? Without having to perform an explicit loop on all of the existing data.
  • a dictionary in the context of the present invention, is a hash table associating a code with a character string. Using a dictionary can in most cases reduce the space required for storage or transmission of a data table, in the case where this contains a large repetition of long identical character strings. A dictionary can also make it possible to extend the number of interface languages for a data table, without having to modify the data themselves.
  • a drop-down menu is a graphic object allowing to display a hierarchical data space according to a fixed organization. It consists of one or more menus, each containing one or more menu items. These menu items can be linked to other menus, which are then considered submenus of the menu containing this menu item.
  • This object is generally reactive with the keyboard or the mouse, allowing to display or hide the submenus at the user's discretion, by the passage of the mouse pointer over a given element, or the click of a button of the mouse.
  • there is at most one menu displayed for each level of hierarchy which in principle makes it possible to display on the screen the structure of a large data space in a very small space.
  • An essential aspect of the present invention is based on the use of hash tables, and an adequate naming of the menus being created.
  • the use of hash tables optimizes the search for an object according to a key or category, the key used here being precisely the name used in the menus.
  • the data Di can be represented by a series of character strings, corresponding to the value of each column c ( ⁇ , j), placed in a given order, arbitrary.
  • a name variable (D ⁇ ) is established in the following manner:
  • nouns (D ⁇ ) (c ( ⁇ , 0), c ( ⁇ , 0) -c ( ⁇ , l)., c ( ⁇ , 0) -c ( ⁇ , l) - -c (y)., c ( ⁇ , 0) -c ( ⁇ , l) - -c ( ⁇ , m) ⁇
  • this is a multidimensional variable containing, at a given position j, the concatenation of the character strings corresponding to the values of the cells of the columns 0 to j for the line considered, separated two by two by dashes.
  • the Names variables are formed by using either the ascending order of the columns 0 to m-1, as carried out above, or by using an order of columns fixed by an Order variable, which will be explained in more detail far, so that you can browse the categories defined in these columns according to any desired priority.
  • four classifications are possible, namely two classifications by taking each column one by one, without taking account of the other column, and two classifications by considering each column, then with a lower priority the other column.
  • object-oriented languages like the "Java” (registered trademark) language from Sun Microsystems, or "C ++" language for example.
  • Two objects are used here, namely an object of type Node, and an object of type Element. These objects adopt a tree structure: a given Node has a single Parent Node (except if it is the highest level node) and one or more child Nodes (except if it is a lowest level).
  • An Element type object has: a Message, which constitutes what should be displayed in a menu,
  • a node type object has:
  • Node object in the form: ⁇ Name, Level, Link, ⁇ List ⁇
  • m is the number of columns in the table
  • c ( ⁇ , j) is the value of column j at line î, as indicated above
  • string ⁇ x ⁇ is a function creating a character string consisting of x
  • concatenation (x, y) is a function creating a character string consisting of string ⁇ x ⁇ followed by string ⁇ y ⁇ ;
  • Order indicates a given order for browsing all or part of the different columns 0 to m-1 of a table
  • Order [k] designates the number of the column in the kth location of Order, k varying between 0 and m-1 (or between
  • Step 210 of FIG. 2 is a step of creating a first list element [0] of a list for the line î, the list element [0] being constituted by chain ⁇ c ( ⁇ , order [0] ] ⁇ , namely the character string constituted by the element contained in line î and in the column fixed by the order value [0].
  • step 220 is carried out a progressive incrementation of a variable Col, starting from 1 to m-1.
  • Step 230 consists in updating the list, by constructing the list element [col] by concatenating the previously established value list [col-1] and by performing the operation consisting in completing the chain list [col-1 ] by a dash then by the chain string ⁇ c (i, order [col] ⁇ , that is to say by the content of the table in the i-th row and in the column fixed by the value order [col ].
  • Step 240 constitutes a test to determine whether all the columns for row i have been traversed
  • FIG. 3 illustrates the main data organization algorithm according to the present invention.
  • box 310 the following information is applied to the algorithm:
  • Step 320 is an initialization step consisting of:
  • Step 330 makes it possible to browse successively all the rows i of the table, from the first to the last.
  • step 340 uses the name generation algorithm of FIG. 2 to create a set of Name names (i, Order) constituted by list [0], ..., list [m-1 ]. Each of these names is called name (j), with j varying from 0 to m-1.
  • This step also indicates that the Parent Node for the Elements that will be created in each step 380 (see below) is the “root” Node defined above.
  • Step 350 makes it possible to successively process the m values of Name (j).
  • step 360 determines whether there exists in the hash table a couple containing name (j) as the first element of the couple, that is to say if one has already associated a Node object with name (j) in the hash table.
  • step 370 the program goes to step 370, where it is established that the Parent Node of the element in question question is the one listed in the hash table in association with name ().
  • the next step 410 tests whether all the rows of the table have been traversed. If not, we go back to step 330 to process the next line and if so, the program goes to step 420 in which we can now create the different menus from the elements created in step 400, these menus responding for example to the action of a mouse.
  • FIGS. 4a to 4c we have illustrated the progressive construction of the nodes corresponding to the four-line table indicated above with the algorithm described with reference to FIG. 3.
  • Each rectangle corresponds to a Node, the upper part of the rectangle containing the Name of the Node and its lower part containing the message or messages of the element or elements associated with this node, that is to say appearing in
  • Figure 5a illustrates the menu structure obtained by applying the algorithms described above using as Order (1,2,3) that is to say the order of the original table.
  • Figure 5b illustrates the menu structure obtained using Order (2,1,3).
  • Figure 5c illustrates the structure obtained using as Order (1,3).
  • Figure 5d illustrates the structure obtained using as Order (2,3). It will thus be noted that the variable Order can have a dimension equal to m-1 (case of FIGS. 5a and 5b), but that it can also have a dimension less than m-1 (case of FIGS. 5c and 5d), in which case the number of levels in the menu hierarchy is reduced accordingly.
  • the user is offered, for example in an independent menu or by dialogue and selection in a specific window, the order to be used, this being indicated in plain text to the user.
  • the order to be used this being indicated in plain text to the user.
  • the user wishes to use the order (2,1,3), we can designate the corresponding choice by "choice by brand, then by product, then by product name?" ".

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un procédé pour créer une structure hiérarchique variable permettant à un utilisateur de déclencher par choix successifs une parmi plusieurs actions dans un système informatique comprend les étapes consistant à: créer une table de données bidimensionnelle, à chaque ligne correspondant une action, tandis qu'au moins deux colonnes de clés contiennent des données de catégories des actions et qu'une colonne d'action contient des données d'actions que la structure hiérarchique doit permettre de déclencher; définir un ordre de parcours de colonnes de clés; et en utilisant cet ordre, créer une structure arborescente de noeuds comportant un nombre de niveaux de noeuds égal au nombre de colonnes de clés dudit sous-ensemble augmenté de un, chaque noeud contenant au moins une rubrique correspondant à une donnée de catégorie ou d'action de la table de données et un identificateur. On peut alors afficher soit des menus en utilisant les rubriques contenues dans les différents noeuds, soit une représentation graphique de la structure arborescente créée.

Description

« PROCEDE POUR CREER UNE STRUCTURE HIERARCHIQUE VARIABLE D'ACCES A DES ACTIONS DANS UN SYSTEME INFORMATIQUE »
La présente invention concerne d'une façon générale la consultation de bases de données informatiques.
La consultation de données telles que celles d'un un catalogue de produits destinées à une audience large pose un certain nombre de problèmes, liés à la présentation de ces données, leur hiérarchisation, et l'optimisation des ressources informatiques mises en œuvre .
A l'heure actuelle, la présentation des données est généralement effectuée par l'intermédiaire d'un tableau bi-dimensionnel, chaque ligne concernant une donnée, et chaque colonne contenant dans la ligne considérée un attribut ou propriété de cette donnée. Cette approche présente des inconvénients majeurs dès que l'ensemble des données présenté dépasse quelque dizaines, et devient humainement impraticable avec quelques centaines de données. De plus, certains utilisateurs seront intéressés par certaines propriétés des données et pas d'autres, cet intérêt pouvant d'ailleurs varier très vite dans le temps, même pour un même utilisateur.
Les techniques d'hiérarchisation permettent de façon connue de classifier les données en catégories et sous-catégories, et pour permettre de retrouver une information, divers regroupements, par l'intermédiaire d'un langage de requête, comme SQL (« Syntax Query Language ») permettront à l'utilisateur averti d'effectuer divers classements qui lui conviennent. Cette approche est malheureusement un travail de spécialiste, très peu adaptée au grand public qui n'est en général pas capable de construire facilement et rapidement une requête SQL ou autre. C'est pourquoi l'utilisateur n'a en général à sa disposition qu'un nombre limité de types de requêtes prédéterminées, auxquelles il n'a aucun accès permettant de les modifier.
L'un des problèmes de cette approche est qu'il est souvent pratiquement impossible de prévoir au départ les besoins exacts de l'utilisateur, et donc de créer toutes les requêtes adéquates. Il est alors courant d'arriver à une situation aberrante, où l'utilisateur doit virtuellement déjà connaître la réponse à sa question, et l'endroit où l'information est stockée. II ressort de ce qui précède que l'optimisation des ressources informatiques est un problème majeur, souvent élude, et qui devient fondamental dans une architecture client/serveur mise en œuvre par exemple sur l'Internet.
Ainsi deux types de problèmes existent et doivent être traités. Le premier est lié à la quantité d'informations envoyées du serveur au client. Le deuxième est lié à l'accès de bases de données présente dans le serveur, qui s'avère extrêmement coûteux en temps processeur et en mémoire vive, ce qui ralentit fortement les temps de réponse dans un environnement client/serveur lorsque le nombre de clients en cours de session est élevé.
La présente invention vise à pallier ces limitations de l'état de l'art et à proposer un procédé qui permette d'organiser une table de données de manière hiérarchisée à partir du contenu des colonnes de la table. Plus précisément, l'invention a pour objet de réorganiser la hiérarchie des données présentées, en attribuant un ordre quelconque aux colonnes de la table, ceci de manière interactive et autonome, par exemple en présentant ces données hiérarchisées par menus déroulants . A cet effet, la présente invention propose un procède pour créer une structure hiérarchique variable permettant a un utilisateur de déclencher par choix successifs une action parmi une pluralité actions dans un système informatique, le procède étant caractérise en ce qu' il comprend les étapes consistant a :
- créer une table de données a plusieurs lignes et a plusieurs colonnes, a chaque ligne correspondant une action respective, tandis qu'au moins deux colonnes de clés contiennent des données de catégories desdites actions et qu'une colonne d'action contient des données désignant les différentes actions que la structure hiérarchique doit permettre de déclencher ;
- définir un ordre de parcours d' au moins un sous- ensemble de l'ensemble des colonnes de clés ; et
- en utilisant ledit ordre de parcours, créer une structure arborescente de nœuds comportant un nombre de niveaux de nœuds égal au nombre de colonnes de clés dudit sous-ensemble augmente de un, chaque nœud contenant au moins une rubrique correspondant a une donnée de catégorie ou d' action de la table de données et un identificateur, un premier niveau de la structure de nœuds contenant un nœud unique dont une pluralité de rubriques correspondent a une pluralité de données de catégories présentes dans la colonne de catégorie de la table de données figurant en premier dans l'ordre de parcours, et chaque niveau suivant le premier niveau contenant, rattaches respectivement au nœud ou a chaque nœud du niveau immédiatement inférieur, un ensemble de nœuds égal au nombre de rubriques dans ledit nœud auquel ils sont rattaches, et chaque identificateur de nœud de niveau supérieur au premier niveau étant construit par une combinaison de l'identificateur du nœud du niveau immédiatement inférieur auquel il est rattache et d'une rubrique contenue dans ce même nœud.
Des aspects préférés, mais non limitatifs, du procédé selon l'invention sont les suivants :
* le procédé comprend en outre l'étape consistant a afficher sélectivement des menus de sélection en utilisant les rubriques contenues dans les différents nœuds . * le procédé comprend en outre l'étape consistant a afficher une représentation de la structure arborescente avec ses rubriques.
* chaque nœud contient un ou plusieurs éléments, chaque élément contenant une rubrique, des données associées à un nœud de niveau inférieur, et des données associées a un nœud de niveau supérieur.
* pour le nœud de premier niveau, les données des éléments contenus dans ce nœud comprennent une donnée indiquant qu'il n'existe pas de nœud de niveau inférieur. * pour chaque nœud de dernier niveau, les données des éléments contenus dans ce nœud comprennent une donnée indiquant qu'il n'existe pas de nœud de niveau supérieur.
* le procédé comprend une étape intermédiaire consistant, pour chaque nœud, a élaborer une chaîne de caractères constituée par la concaténation des contenus de la table de données pour une ligne donnée et dans un ordre de colonnes indique par l'ordre défini.
* le procède comprend en outre les étapes consistant : - pour chaque nouvelle chaîne de caractères élaborée, a associer a cette chaîne un nœud de niveau immédiatement inférieur, et à mémoriser le couple chaîne/nœud,
- a chaque élaboration d'une chaîne de caractères, a vérifier si un couple chaîne/nœud contenant cette même chaîne a déjà été mémorisé, dans l'affirmative, a associer a la chaîne élaborée le nœud de niveau immédiatement inférieur constitué par le second élément du couple déjà mémorisé. D'autres aspects, buts et avantages de la présente invention apparaîtront mieux à la lecture de la description détaillée suivante d'une forme de réalisation préférée de celle-ci, donnée à titre d'exemple non limitatif et faite en référence aux dessins annexés, sur lesquels : les figures la et lb illustrent schématiquement deux types de parcours d'une structure arborescente, la figure 2 est un logigramme illustrant un algorithme de génération de noms pour une ligne d'une table suivant un ordre donné, la figure 3 est un logigramme illustrant un algorithme d'organisation de données utilisant l'algorithme de génération de la figure 2, les figures 4a à 4c illustre le contenu des nœuds obtenus avec l'algorithme de la figure 3 pour les quatre produits d'une table de données indiquée plus loin a titre d'exemple, et les figures 5a à 5d illustrent le déroulement des menus pour quatre classements possibles définissant quatre modes de consultation. Par convention dans la description qui suit, on indiquera ci-dessous avec la première lettre en majuscules le nom d'une variable, et avec la première lettre en minuscules le contenu ou valeur d'une variable.
Définitions
a) Tabl e de données
Une table de données, dans le contexte de la présente invention, est un tableau à deux dimensions, chaque ligne correspondant a une donnée, et chaque colonne de la ligne considérée contenant une caractéristique ou propriété de cette donnée. On notera ici que le procédé de stockage de ces informations n'est pas à considérer ici. Ainsi la table de données peut provenir d'un fichier texte ou binaire, résulter de l'exécution d'une procédure locale ou déportée, être directement constituée d'une table appartenant à une base de données, ou encore résulter d'une requête de type SQL
(« Syntax Query Language ») par exemple.
b) Tabl e de données homogènes
Une table de données, dans le contexte utilise ici, est dite homogène si toutes les caractéristiques d'une donnée existent pour toutes les autres données. Par exemple, si une caractéristique est nommée "Couleur", et si toutes les données présentées possèdent une caractéristique "Couleur" non vide, alors la table est homogène. Dans le cas ou une table de données n'est pas homogène, il est possible de la rendre homogène en étendant la définition d'une ou plusieurs caractéristiques.
Par exemple, pour la caractéristique "Couleur", si l'ensemble des couleurs disponible est « Rouge », « Vert » ou « Bleu », la notion "Pas de couleur" peut être attribuée a toutes les données pour lesquelles la caractéristique couleur n'a pas de sens. L'ensemble des couleurs disponibles devient alors « Rouge, Vert, Bleu, Pas de couleur ». Ce processus peut en général être appliqué pour tout type de données.
Selon un autre exemple, avec une donnée Booléenne
(de type « Oui »/« Non ») , la valeur « Non » peut être attribuée dans le cas ou elle n'a pas de sens. De même, pour une donnée numérique, la valeur « 0 » peut servir de marqueur particulier.
c) Tabl e de hachage
Une table de hachage permet d'associer une donnée à une valeur, créant ainsi des paires (clé, valeur) . Une table de hachage est généralement utilisée dans le contexte de bases de données, permettant un accès rapide, voire immédiat, à une ou plusieurs colonnes jugées importantes, et généralement nommées clés. Cette organisation favorise la vitesse d'exécution liée à une recherche, au détriment de l'espace utilise pour stocker les données. Elle permet de repondre aux questions « est- ce que la donnée X existe ? » ou encore « quelle est la valeur de la cle Y ? » sans avoir a effectuer une boucle explicite sur l'ensemble des données existantes.
d) Di cti onnaire
Un dictionnaire, dans le contexte de la présente invention, est une table de hachage associant un code a une chaîne de caractères. L'utilisation d'un dictionnaire peut permettre dans la plupart des cas, de réduire l'espace nécessaire au stockage ou a la transmission d'une table de données, dans le cas ou celle-ci contient une répétition importante de chaînes de caractères longues toutes identiques. Un dictionnaire peut aussi permettre d'étendre le nombre de langues d'interface pour une table de données, sans avoir a modifier les données elles-mêmes .
e) Menu Déroulant
Un menu déroulant est un objet graphique permettant d'afficher un espace de données hiérarchise suivant une organisation fixe. Il est compose d'un ou de plusieurs menus, chacun contenant un ou plusieurs éléments de menu. Ces éléments de menu peuvent être lies a d'autres menus, qui sont alors considères comme des sous-menus du menu contenant cet élément de menu. Cet objet est généralement reactif au clavier ou a la souris, permettant d'afficher ou de masquer les sous-menus au gre de l'utilisateur, par le passage du pointeur de la souris sur un élément donne, ou le clic d'un bouton de la souris. A chaque instant, il existe au plus un menu affiche pour chaque niveau de hiérarchie, ce qui en principe, permet d'afficher a l'écran la structure d'un espace de données important dans un espace très réduit.
On va maintenant décrire en détail un système et un procède pour l'organisation automatique du contenu d'une table de données, la hiérarchie étant directement établie par le contenu des colonnes. De plus, l'ordre des colonnes peut être modifie ou spécifie a souhait, sans nécessiter d'accès a la source de donnée externe ou locale d'origine; Ces deux points repondent directement aux contraintes d'hiérarchisation et d'optimisation évoquées plus haut.
Dans la description qui suit, on a choisi a titre d' exemple de présenter les données sous forme de menu déroulant. Il est également possible de les présenter par exemple sous forme d'arbre, la différence entre ces deux structures étant principalement liée a l'ordre de parcours des éléments, l'ordre étant dit « depth-first » (priorité a la profondeur, voir figure la) pour un arbre, et « breadth-fîrst » (priorité a la largeur, voir figure lb) pour un menu. Le passage d'une représentation a l'autre ne posera aucun problème particulier en pratique.
Un aspect essentiel de la présente invention repose sur l'utilisation de tables de hachage, et d'un nommage adéquat des menus en cours de création. L'utilisation de tables de hachage optimise la recherche d'un objet en fonction d'une cle ou catégorie, la cle utilisée ici étant précisément la dénomination utilisée dans les menus. La donnée Di peut être représentée par une suite de chaînes de caractères, correspondant a la valeur de chaque colonne c(ι,j), placées suivant un ordre donne, arbitraire .
Ainsi une table de m colonnes sur n lignes adoptera, avec la définition donnée plus haut, la configuration suivante :
Figure imgf000011_0001
Par ailleurs, pour chaque ligne du tableau correspondant à une donnée Di, on établit une variable noms(Dι) de la façon suivante :
noms(Dι) = (c(ι,0), c(ι,0)-c(ι,l). , c(ι,0)-c(ι,l)- -c(y). , c(ι,0)-c(ι,l)- -c(ι,m)}
On comprend qu'il s'agit d'une variable multidimensionnelle contenant, en une position j donnée, la concaténation des chaînes de caractères correspondant aux valeurs des cellules des colonnes 0 à j pour la ligne considérée, séparées deux à deux par des tirets.
Pour prendre un exemple concret, on va ici considérer un extrait d'une table de données qui pourrait correspondre au produits du catalogue d'un magasin électronique d'articles de sport :
Table I (n = 4, m = 3)
Numéro article Type Produit Marque Nom 1 Chaussures Reebok « The Answer »
2 Chaussures Reebok « After Shock Mid »
3 Chaussures Adidas « Real Deal »
4 Accessoires Shimano « VTT Rider »
(Note : toutes les marques citées ici sont des marques déposées . )
On comprend que, pour l'article numéro 1, on a :
Noms(l) = {"Chaussures", "Chaussures-Reebok",1' Chaussures-Reebok-The Answer"} Cette dénomination met en évidence que le produit No. 1 devrait se trouver dans le menu "Chaussures", qui permet lui-même d'accéder au menu "Chaussures-Reebok", et enfin au nom du produit. Le résultat obtenu est un regroupement automatique en fonction des caractéristiques des produits, mis en évidence directement par la fonction de dénomination. Ainsi l'on peut voir très clairement que le produit No. 2, dont les noms sont:
Noms(2) = { "Chaussures". "Chaussures-Reebok"," Chaussures-Reebok-After Shock Mid "}
appartient au même groupe que le produit No. 1.
Selon la présente invention, on forme les variables Noms en utilisant soit l'ordre croissant des colonnes 0 à m-1, comme effectué ci-dessus, soit en utilisant un ordre de colonnes fixé par une variable Ordre, que l'on détaillera plus loin, de façon à pouvoir parcourir les catégories définies dans ces colonnes selon toute priorité souhaitée.
Plus particulièrement, en considérant deux colonnes, quatre classements sont possibles, à savoir deux classements en prenant chaque colonne une à une, sans tenir compte de l'autre colonne, et deux classements en considérant chaque colonne, puis avec une priorité inférieure l'autre colonne.
Dans le cas général, le nombre (m) d'ordres possible est la somme de tous les arrangements de m objets pris p a p, pour p variant de 1 à m, soit :
Figure imgf000014_0001
p=l
Ce nombre augmente très rapidement avec le nombre de colonnes; en effet, N(2) = 4, N(3) = 15, N(4) = 64 Les algorithmes utilisés selon la présente invention seront plus compréhensibles en introduisant la notion d'objet, présente dans les langages orientés objet, comme le langage « Java » (marque déposée) de Sun Microsystems, ou le langage « C++ » par exemple. Deux objets sont utilises ici, a savoir un objet de type Nœud, et un objet de type Elément. Ces objets adoptent une structure arborescente : un Nœud donne possède un Nœud Parent unique (sauf s'il s'agit du nœud de niveau le plus élevé) et un ou plusieurs Nœuds enfants (sauf s'il s'agit d'un nœud de niveau le plus bas) . Un objet de type Elément possède : un Message, qui constitue ce qui doit être affiche dans un menu,
- un Nœud Parent, - un Nœud Enfant.
On le représente sous la forme : {Message Parent, Enfant}
On notera ici que, dans le cas ou un Elément n'a pas d'enfant, alors la variable Nom (voir ci-dessous) du Nœud Enfant prend la valeur « null ». Un objet de type Nœud possède :
- un Nom,
- un Niveau de profondeur positif, commençant a 0, - un Lien, constitue d'un objet de type Elément,
- une Liste, constituée par un tableau d'Eléments. Le Lien est en fait l'Elément dans le Nœud Parent qui permet d'arriver à ce Nœud.
On représente ici un objet Nœud sous la forme : {Nom, Niveau, Lien, {Liste}}
En référence maintenant a la figure 2, on va décrire un algorithme de génération de la variable multidimensionnelle Noms telle que décrite plus haut pour une ligne î d'une table donnée. On utilise ici les conventions suivantes : m est le nombre de colonnes de la table ; c(ι,j) est la valeur de la colonne j à la ligne î, comme indiqué plus haut; chaîne{x} est une fonction créant une chaîne de caractère constituée par x ; concaténation (x,y) est une fonction créant un chaîne de caractères constituée par chaîne{x} suivi de chaîne {y} ;
Ordre indique un ordre donne de parcours de tout ou partie des différentes colonnes 0 a m-1 d'une table, et
Ordre [k] désigne la numéro de la colonne au kième emplacement de Ordre, k variant entre 0 et m-1 (ou entre
0 et un entier inférieur à m-1 si l'ordre concerne seulement un sous-ensemble des colonnes de catégories) . L'étape 210 de la figure 2 est une étape de création d'un premier élément liste [0] d'une liste pour la ligne î, l'élément liste [0] étant constitué par chaîne{c(ι, ordre[0]}, a savoir la chaîne de caractères constituée par l'élément contenu dans la ligne î et dans la colonne fixée par la valeur ordre [0] . A l'étape 220 est effectuée une incrémentation progressive d'une variable Col, en partant de 1 jusqu'à m-1.
L'étape 230 consiste à mettre à jour la liste, en construisant l'élément liste [col] par concaténation de la valeur précédemment établie liste [col-1] et en effectuant l'opération consistant à compléter la chaîne liste [col-1] par un tiret puis par la chaîne chaîne{c(i, ordre[col]}, c' est-à-dire par le contenu de la table dans la i-ème ligne et dans la colonne fixée par la valeur ordre [col].
L'étape 240 constitue un test pour déterminer si toutes les colonnes pour la ligne i ont été parcourues
(dans l'ordre fixé par la valeur de Ordre) . Dans la négative, le programme retourne à l'étape 220 pour compléter l'élément Liste. Dans l'affirmative, la liste
(égale à liste [m-1] ) est retournée (étape 250).
Pour prendre un exemple concret, on va considérer la troisième ligne de la table donnée plus haut, avec une valeur de Ordre égale à (2,1,3) . La valeur de liste [3] délivrée par l'algorithme de la figure 2 est alors égale à « Adidas-Chaussures-Real Deal ».
On comprend donc que l'algorithme de la figure 2 est capable d' engendrer successivement tous les éléments de la variable multidimensionnelle Noms pour la ligne i considérée .
La figure 3 illustre l'algorithme principal d'organisation de données selon la présente invention.
Dans la case 310, on applique à l'algorithme les informations suivantes :
- une table de données de n lignes x m colonnes ; - une variable Ordre désiré, à savoir un ordre donné de nombres entiers successifs compris entre 1 et m- 1.
L'étape 320 est une étape d'initialisation consistant :
- à créer un Nœud racine appelé « root », dont le Nom est « 0 », dont le niveau est 0, dont le Lien adopte une valeur « null » (absence de lien) , et enfin dont la Liste d'Eléments est vide, et - à créer une table de hachage h(nom,nœud),
- à ajouter dans la table de hachage un couple (« 0 », root) (par une fonction d'ajout dénommée h.add) .
L' étape 330 permet de parcourir successivement toutes les lignes i de la table, de la première à la dernière.
Pour chaque ligne, l'étape 340 fait appel à l'algorithme de génération de noms de la figure 2 pour créer un ensemble de Noms noms (i, Ordre) constitué par liste[0], ..., liste [m-1]. Chacun de ces noms est dénommé nom(j), avec j variant de 0 à m-1. Cette étape indique également que le Nœud Parent pour les Eléments qui seront créés à chaque étape 380 (voir ci-dessous) est le Nœud « root » défini plus haut.
L'étape 350 permet de traiter successivement les m valeurs de Nom(j) .
Pour chaque valeur nom(j), l'étape 360 détermine s' il existe dans la table de hachage un couple contenant nom (j ) comme premier élément du couple, c'est-à-dire si l'on a déjà associé un objet Nœud à nom(j) dans la table de hachage.
Dans l'affirmative, le programme passe à l'étape 370, où l'on établit que le Nœud Parent de l'élément en question est celui figurant dans la table de hachage en association avec nom( ) .
Dans la négative, le programme passe à l'étape 380 dans laquelle : - on crée un Elément e = élément { c (i, Ordre ( )) , parent, null}, c' est-a-dire un élément dont le Message est la chaîne de caractères c (i, Ordre (j )) , dont le Nœud Parent est parent, et dont le Nœud Enfant est « null » (absence de Nœud Enfant) ; - on fixe une valeur de Niveau (valeur niveau) égale a la valeur de Niveau du Nœud Parent mcrementee de 1 (niveau = parent .nιveau+1 ) ;
- on crée un Nœud n égal a {nom(j), niveau, e, {vide}}, c'est-a-dire un Nœud qui possède comme Nom nom(j), comme Niveau la valeur niveau indiquée ci- dessus, comme Lien l'élément e crée plus haut, et comme Liste un contenu vide ; on ajoute l'Elément dans la Liste du Nœud Parent ; - on assigne a e un Nœud Enfant constitue par n (fonction e. enfant = n) ;
- enfin on effectue la fonction h.add d'ajout du nœud n associé à nom(j) dans la table de hachage par la fonction h. add (nom (j ) , n) . Le programme passe ensuite a l'étape 370 décrite plus haut.
Apres l'étape 370, le programme teste en 390 si toute la liste de Noms nom ( j ) a ete parcourue. Dans la négative, le programme retourne a l'étape 350 pour traiter le nom suivant. Dans l'affirmative, le programme passe a une étape 400 dans laquelle : - on crée l'élément e = élément { c (i, m) , parent, null}, c'est-à-dire l'Elément qui possède comme Nom la chaîne c(i,m) de la table, comme Nœud Parent parent, et comme Nœud Enfant la valeur « null » (absence de nœud enfant) ; on ajoute l'Elément e dans la Liste du Nœud Parent .
L'étape suivante 410 teste si toutes les lignes de la table ont été parcourues. Dans la négative, on repasse à l'étape 330 pour traiter la ligne suivante et dans l'affirmative, le programme passe à l'étape 420 dans laquelle on peut maintenant créer les différents menus à partir des éléments créés à l'étape 400, ces menus répondant par exemple à l'action d'une souris. En référence maintenant aux figures 4a à 4c, on a illustré la construction progressive des nœuds correspondant à la table à quatre lignes indiquée plus haut avec l'algorithme décrit en référence à la figure 3.
Chaque rectangle correspond à un Nœud, la partie supérieure du rectangle contenant le Nom du Nœud et sa partie inférieure contenant le ou les messages du ou des éléments associés à ce nœud, c' est-à-dire figurant dans
Liste pour ce Nœud, messages qui seront affichés comme articles sélectionnables individuellement dans les menus. La structure de nœuds complète est illustrée dans le bas de la figure 4c.
La figure 5a illustre la structure de menus obtenus en appliquant les algorithmes décrits ci-dessus en utilisant comme Ordre (1,2,3) c'est-à-dire l'ordre de la table originale.
La figure 5b illustre quant à elle la structure de menus obtenue en utilisant comme Ordre (2,1,3) . La figure 5c illustre la structure obtenue en utilisant comme Ordre (1,3) .
Enfin la figure 5d illustre la structure obtenue en utilisant comme Ordre (2,3) . On notera ainsi que la variable Ordre peut présenter une dimension égale à m-1 (cas des figures 5a et 5b), mais qu'elle peut aussi présenter une dimension inférieure à m-1 (cas des figures 5c et 5d) , auquel cas le nombre de niveaux dans la hiérarchie des menus est diminué d'autant.
Avantageusement, dans une mise en œuvre pratique, on propose à l'utilisateur, par exemple dans un menu indépendant ou par dialogue et sélection dans une fenêtre spécifique, l'ordre à utiliser, celui-ci étant indiqué en clair à l'utilisateur. Dans l'exemple indiqué ci-dessus, si l'utilisateur souhaite utiliser l'ordre (2,1,3), on peut lui désigner le choix correspondant par « choix par marque, puis par produit, puis par nom de produit ? ».
Bien entendu, la présente invention n'est nullement limitée à la forme de réalisation décrite, mais l'homme du métier saura y apporter toute variante ou modification conforme à son esprit.
En particulier, bien que la description qui précède ait fait référence à des produits classés selon différentes clés ou catégories (ici type de produit et marque), l'invention s'applique à toute sorte d' informations déclenchant des actions dans un système informatique local ou en reseau) et organisées selon au moins deux groupes de catégories.

Claims

REVENDICA IONS
1. Procédé pour créer une structure hiérarchique variable permettant à un utilisateur de déclencher par choix successifs une action parmi une pluralité d'actions dans un système informatique comprenant un processeur et une mémoire, le procédé étant caractérisé en ce qu'il comprend les étapes consistant à :
- créer dans le système informatique et y mémoriser une table de données (c(i,j)) à plusieurs lignes (i) et à plusieurs colonnes (j), à chaque ligne correspondant une action respective, tandis qu'au moins deux colonnes de clés contiennent des données de catégories desditeε actions et qu'une colonne d'action contient des données désignant les différentes actions que la structure hiérarchique doit permettre de déclencher ; définir par interaction entre le système informatique et l'utilisateur un ordre de parcours (Ordre) d'au moins un sous-ensemble de l'ensemble des colonnes de clés ; et
- en utilisant ledit ordre de parcours, créer à l'aide du processeur, et mémoriser dans la mémoire, une structure arborescente de nœuds (Nœuds) comportant un nombre de niveaux de nœuds égal au nombre de colonnes de clés dudit sous-ensemble augmenté de un, chaque nœud contenant au moins une rubrique (Message) correspondant à une donnée de catégorie ou d' action de la table de données et un identificateur (Nom) , un premier niveau de la structure de nœuds contenant un nœud unique dont une pluralité de rubriques correspondent à une pluralité de données de catégories présentes dans la colonne de catégorie de la table de données figurant en premier dans l'ordre de parcours, et chaque niveau suivant le premier niveau contenant, rattachés respectivement au nœud ou à chaque nœud du niveau immédiatement inférieur, un ensemble de nœuds égal au nombre de rubriques dans ledit nœud auquel ils sont rattachés, et chaque identificateur de nœud de niveau supérieur au premier niveau étant construit par une combinaison de l'identificateur du nœud du niveau immédiatement inférieur auquel il est rattaché et d'une rubrique contenue dans ce même nœud.
2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à afficher sélectivement dans le système informatique des menus de sélection en utilisant les rubriques contenues dans les différents nœuds.
3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à afficher dans le système informatique une représentation de la structure arborescente avec ses rubriques.
4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que chaque nœud contient un ou plusieurs éléments (Elément) , chaque élément contenant une rubrique (Message) , des données (Parent) associées à un nœud de niveau inférieur, et des données (Enfant) associées à un nœud de niveau supérieur.
5. Procédé selon la revendication 4, caractérisé en ce que, pour le nœud de premier niveau, les données des éléments contenus dans ce nœud comprennent une donnée (« O ») indiquant qu'il n'existe pas de nœud de niveau inférieur .
6. Procédé selon l'une des revendications 4 et 5, caractérisé en ce que, pour chaque nœud de dernier niveau, les données des éléments contenus dans ce nœud comprennent une donnée (null) indiquant qu'il n'existe pas de nœud de niveau supérieur.
7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce qu' il comprend une étape intermédiaire consistant, pour chaque nœud, à élaborer à l'aide du processeur et à mémoriser une chaîne de caractères (Nom) constituée par la concaténation des contenus (c(i,j)) de la table de données pour une ligne donnée et dans un ordre de colonnes indiqué par l'ordre défini.
8. Procédé selon la revendication 7, caractérisé en ce qu' il comprend en outre les étapes effectuées par le processeur et consistant : pour chaque nouvelle chaîne de caractères élaborée, à associer à cette chaîne un nœud de niveau immédiatement inférieur (Nœud Parent) , et à mémoriser dans la mémoire, le couple chaîne/nœud (h (nom, nœud)), - à chaque élaboration d'une chaîne de caractères, à vérifier si un couple chaîne/nœud contenant cette même chaîne a déjà été mémorisé, dans l'affirmative, à associer à la chaîne élaborée le nœud de niveau immédiatement inférieur constitué par le second élément du couple déjà mémorisé.
PCT/FR2000/002865 1999-10-15 2000-10-13 Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique WO2001029703A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP00968042A EP1222575A1 (fr) 1999-10-15 2000-10-13 Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique
AU78006/00A AU7800600A (en) 1999-10-15 2000-10-13 Method for creating a variable hierarchical structure for accessing actions in an information processing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9912887A FR2799855A1 (fr) 1999-10-15 1999-10-15 Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique
FR99/12887 1999-10-15

Publications (1)

Publication Number Publication Date
WO2001029703A1 true WO2001029703A1 (fr) 2001-04-26

Family

ID=9550981

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2000/002865 WO2001029703A1 (fr) 1999-10-15 2000-10-13 Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique

Country Status (4)

Country Link
EP (1) EP1222575A1 (fr)
AU (1) AU7800600A (fr)
FR (1) FR2799855A1 (fr)
WO (1) WO2001029703A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7706386B2 (en) * 2005-10-26 2010-04-27 Cisco Technology, Inc. Fast 2-key scheduler

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630125A (en) * 1994-05-23 1997-05-13 Zellweger; Paul Method and apparatus for information management using an open hierarchical data structure
WO1999014651A2 (fr) * 1997-09-17 1999-03-25 Tenfold Corporation Procede et systeme de creation de logiciel d'application pour base de donnees requerant une programmation minimale

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630125A (en) * 1994-05-23 1997-05-13 Zellweger; Paul Method and apparatus for information management using an open hierarchical data structure
WO1999014651A2 (fr) * 1997-09-17 1999-03-25 Tenfold Corporation Procede et systeme de creation de logiciel d'application pour base de donnees requerant une programmation minimale

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7706386B2 (en) * 2005-10-26 2010-04-27 Cisco Technology, Inc. Fast 2-key scheduler

Also Published As

Publication number Publication date
AU7800600A (en) 2001-04-30
FR2799855A1 (fr) 2001-04-20
EP1222575A1 (fr) 2002-07-17

Similar Documents

Publication Publication Date Title
EP1483693B1 (fr) Representation informatique d'une structure de donnees arborescente et methodes de codage/decodage associees
AU2022221498A1 (en) Creation and update of hierarchical websites based on collected business knowledge
US6728705B2 (en) System and method for selecting content for displaying over the internet based upon some user input
EP1045314A2 (fr) Interface utilisateur d'un moteur de recherche
US8122023B2 (en) Data access using multilevel selectors and contextual assistance
US20130091162A1 (en) Data Access Using Multilevel Selectors and Contextual Assistance
FR2840088A1 (fr) Moteur de recherche et base de donnees, et procedes pour leur mise en oeuvre
WO2002075591A1 (fr) Procede de navigation par calcul de groupes, recepteur mettant enoeuvre le procede, et interface graphique pour la presentation duprocede
EP1184796A1 (fr) Procédé de navigation associative dans des bases de données multimédia
FR2807849A1 (fr) Procede et systeme de recherche et d'aide au choix
CN110442584B (zh) 一种基于异步加载的树形结构资源检索的方法
EP1542139A1 (fr) Appareil de recherche d'information, méthode pour la recherche d'information, et mémoire sur laquelle le programme de recherche d'information est enregistré
EP2188744A1 (fr) Installation de gestion d'une base de données
KR20000023961A (ko) 정보 모델링방법 및 데이터베이스 검색시스템
EP1912170A1 (fr) Dispositif informatique de corrélation propagative
WO2001029703A1 (fr) Procede pour creer une structure hierarchique variable d'acces a des actions dans un systeme informatique
EP1774441B1 (fr) Procédé de traitement de données et logiciel associé
FR2917518A1 (fr) Procede de tri d'informations
EP1408428A1 (fr) Système et procédé de traitement et de visualisation des résultats de recherches effectuées par un moteur de recherche à base d'indexation, modèle d'interface et méta-modèle correspondants
JP2001184356A (ja) 利用者嗜好学習型データベース検索装置
EP0938699A1 (fr) Interface pour cederoms
EP1700233A2 (fr) Procede d'organisation d'une base de donnees
FR3077148A1 (fr) Procede et dispositif electronique de selection d'au moins un message parmi un ensemble de plusieurs messages, programme d'ordinateur associe
CN116304098A (zh) 一种基于商品的智能生成配套主题及资讯方法
Testas Random Forest Regression with Pandas, Scikit-Learn, and PySpark

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

WWE Wipo information: entry into national phase

Ref document number: 2000968042

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 09868476

Country of ref document: US

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWP Wipo information: published in national office

Ref document number: 2000968042

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2000968042

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP