WO2006001241A1 - ノードを挿入する方法、装置及びプログラム - Google Patents

ノードを挿入する方法、装置及びプログラム Download PDF

Info

Publication number
WO2006001241A1
WO2006001241A1 PCT/JP2005/011237 JP2005011237W WO2006001241A1 WO 2006001241 A1 WO2006001241 A1 WO 2006001241A1 JP 2005011237 W JP2005011237 W JP 2005011237W WO 2006001241 A1 WO2006001241 A1 WO 2006001241A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
parent
child
nodes
slave
Prior art date
Application number
PCT/JP2005/011237
Other languages
English (en)
French (fr)
Inventor
Shinji Furusho
Original Assignee
Turbo Data Laboratories Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Turbo Data Laboratories Inc. filed Critical Turbo Data Laboratories Inc.
Priority to JP2006528509A priority Critical patent/JP4681555B2/ja
Priority to US11/571,191 priority patent/US20090019067A1/en
Publication of WO2006001241A1 publication Critical patent/WO2006001241A1/ja

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Definitions

  • the present invention relates to a method of handling a tree-type data structure, and more particularly to a method of inserting a node into a tree-type data structure.
  • the present invention also relates to an information processing apparatus that performs the method.
  • the present invention relates to a program for executing the method and a recording medium on which the program is recorded.
  • RDB relational databases
  • the second reason for the inefficiency is that it takes time to express the search results. If you try to express a node group that hits the search, you must also express the node that is a descendant of that node, but unlike the RDBMS, the data structure is atypical, so to express the descendant node It takes time.
  • RDB which is the mainstream of databases
  • a method of converting tree-format data to RDB for example, see Patent Document 1. Proposed.
  • RDB data is broken down into tables. Therefore, to convert the actual tree format data into RDB, it is necessary to push the tree format data into the table.
  • system construction based on RDB is a very laborious work.
  • An example approach to creating a database of XML data as is is to take a copy of the data entered in the tree structure. For example, if the item is "age" Separate search index data is stored (for example, see Patent Document 2). This makes full use of the merits of XML data that allows attributes to be added to the data itself, and allows the relational structure of each item expressed using tags to be stored as is.
  • Patent Document 1 Japanese Unexamined Patent Publication No. 2003-248615
  • Patent Document 2 Japanese Patent Laid-Open No. 2001-195406
  • Non-Patent Document 1 SECK, Inc., "Karearea White Paper", [online], [February 19, 2004 search], Internet ⁇ URL: http: //www.sec. Co.jp/products/karearea /
  • Non-Patent Document 2 W3C, "Extensible Markup Language (XML) 1.0 (Third Edition)" ⁇ [onl ine], February 4, 2004, [Search February 19, 2004], Internet URL: http : ⁇ ww w.w3.org/TR/2004/REC-xml-20040204/>
  • Non-Patent Document 3 R. Alan, Iku, Brad Lupen, Sultan Luman, “Programming XML”, Nikkei DP Soft Press, 2002, p.59—84
  • this mechanism is a search that uses the relationship between nodes as a problem (for example, extraction of a tree that includes “60 years old” and “age” as ancestors and “1 year” and “age” as descendants) Not available for
  • the fundamental problem of such a conventional technique is that the tree-type data structure is expressed by focusing on only individual data and connecting the nodes that store the data with pointers.
  • the relationship between them for example, parent-child, ancestor, descendant, sibling (generation), generation, etc., cannot be traced efficiently.
  • the value of the pointer is not constant, it cannot be used for the purpose of indicating the data storage address, and the relationship between the nodes cannot be expressed directly.
  • it has been difficult to edit the topology of a tree-type data structure in particular, to insert a descendant node into a node with tree-structured data.
  • the above DOM only specifies the interface for operations that edit the topology of the tree-type data structure, not the specific method of operation.
  • the present invention can efficiently insert a node into a tree-type data structure.
  • the purpose is to provide a law, an information processing apparatus, a program, and a recording medium on which the program is recorded.
  • the present invention relates to a parent-child relationship between nodes constituting a tree-type data structure, and a parent node to a child node that is not a parent-child relationship in which a child node is associated with a parent node. If the node is represented by a “child-to-parent” relationship, the node is inserted into the master data of the tree type data structure from the slave side data of the tree type data structure. .
  • a node insertion method for inserting a node of slave side data having a tree type data structure into master side data having a tree type data structure includes:
  • a unique node identifier is given to a node including a root node, and is given to each non-root node that is a node other than the root node.
  • the node identifier given to each parent node of the non-root 'node is associated with the node identifier, thereby expressing the parent-child relationship between the nodes,
  • the node insertion method is
  • a parent-child relationship when a parent-child relationship is expressed by a known “parent ⁇ child” relationship, a single parent node may correspond to a plurality of child nodes.
  • the parent-child relationship cannot be defined without specifying. That is, even if a parent node is specified, a child node having a parent-child relationship with the parent node cannot be specified.
  • the parent-child relationship when the parent-child relationship is expressed by a “child ⁇ parent” relationship as in the present invention, since only one parent node always corresponds to one child node, this child node can be identified by specifying this child node. Supports child nodes The only parent node that can be immediately identified. As a result, the master side specific node of the master side data and the slave side specific data of the slave side data can be specified, and the descendant node of the slave side specific data can be inserted as the descendant node of the master side specific node. .
  • the parent-child relationship by the expression "child ⁇ parent" is a depth priority mode in which a child node is prioritized over a node of the same generation, and is continuously assigned to a node as a node identifier. Represented by an array of integers. For this reason, in the node insertion method according to the preferred embodiment, the unique node identifier given to the node is a continuous integer given in preference to a child node over a node of the same generation.
  • the descendant nodes of the slave-side specific node of the slave-side data are determined by the continuous region of the array expressing the parent-child relationship, and the new parent-child of the master-side data and the descendant nodes of the slave-side specific node are determined. Generate an array that represents the relationship. For this reason, in a more preferred embodiment, the node insertion method is:
  • the parent-child relationship between the nodes is related to the non-root 'node associated with each other in the order of the node identifier given to each of the non-root' nodes. It is represented by an array of node identifiers assigned to each parent node,
  • a node identifier assigned to the slave side specific node in the array representing the parent-child relationship of the slave side data is stored. In this way, all descendant nodes of the slave side specific node are identified by extracting a continuous area in which a value greater than or equal to the value of the node identifier assigned to the slave side specific node is extracted Includes steps to perform.
  • the step of inserting the descendant node of the slave side specific node into the master side data is performed in the master side data.
  • the descendant node of the slave side specific node is inserted into the descendant node of the master side specific node in the master side data in the descendant node of the slave side specific node in the slave side data
  • children no more than nodes of the same generation The slave side data is assigned to an array representing the parent-child relationship between the nodes of the master side data by assigning node identifiers with priority given to the nodes and associating the node identifiers of the corresponding parent nodes in the order of the node identifiers. Generating an array representing a new parent-child relationship into which an array representing the parent-child relationship of the descendant node of the slave side specific node is inserted.
  • the address storing the node identifier of the parent node corresponding to the node can be easily obtained from the node identifier.
  • Node identifier power of node It is possible to speed up the process of drawing the node identifier of the parent node.
  • the parent-child relationship of nodes assigned consecutive numbers with depth priority is arranged based on the “child-to-parent” relationship, an excellent property that descendant nodes of a certain node appear in the continuous region is obtained. By using this property, it is possible to identify the descendant nodes of the slave side specific node.
  • a node identifier is given to a child node in preference to a node of the same generation until the specific node on the master side appears, and the node identifier of the parent node of the node is assigned to the node identifier of the node A step of associating with
  • a node identifier is assigned to the master side specific node, and the child node is given priority over the descendant node of the slave side specific node as a descendant node of the master side specific node. And associating each of the descendant nodes with a node identifier of its parent node;
  • a node identifier is given to the remaining node in favor of a child node over a node of the same generation, and the remaining node Associating the node identifier of the parent node with the node identifier of
  • an array representing a new parent-child relationship can be generated in three steps: processing up to the insertion point, processing at the insertion point, and processing after the insertion point.
  • an information processing apparatus that implements the node insertion method as described above.
  • An object of the present invention includes storage means for storing master side data having a tree type data structure and slave side data having a tree type data structure,
  • Each of the master side data and the slave side data stored in the storage means is given a unique node identifier to a node including a root 'node, and is a non-root which is a node other than the root' node.
  • the node identifier assigned to each parent node of the non-root node is associated with the node identifier assigned to each of the nodes, thereby expressing the parent-child relationship between the nodes.
  • a descendant node specifying means for specifying a descendant node of the slave side specific node in the slave side data
  • the unique node identifier assigned to the node gives priority to the child node over the node of the same generation. Are consecutive integers.
  • the parent-child relationship between the nodes is related to the non-root 'node associated with each other in the order of the node identifier given to each of the non-root' nodes. It is represented by an array of node identifiers assigned to each parent node,
  • the descendant node specifying means stores a node identifier assigned to the slave side specific node in the array expressing the parent-child relationship of the slave side data. All the descendant nodes of the slave side specific node are specified by extracting a continuous area in which a value greater than or equal to the value of the node identifier assigned to the slave side specific node is extracted from the next position.
  • the node insertion means includes the slave side in the master side data and the descendant node of the slave side specific node in the slave side data.
  • the node identifier is given with priority over the node of the same generation, and the node identifier
  • the parent-child relationship of the descendant node of the slave-side specific node in the slave-side data is represented in the array expressing the parent-child relationship between the nodes of the master-side data.
  • An array expressing a new parent-child relationship in which the array to be expressed is inserted is generated.
  • the node insertion means includes
  • a node identifier is given to the node in preference to a child node over a node of the same generation, and the parent identifier of the node is assigned to the node identifier of the node.
  • a recording medium in which the above program is recorded is provided.
  • the parent-child relationship between the nodes of the tree-type data structure is described based on the expression "child ⁇ parent", so one storage location is provided for one node. Can define parent-child relationships.
  • the amount of memory accessed when manipulating the tree-type data structure is reduced, thereby speeding up the node insertion operation.
  • FIG. 1 is a block diagram showing a hardware configuration of a computer system that handles a tree-type data structure that is useful in the embodiment of the present invention.
  • this computer system 10 has a configuration similar to a normal one, and a CPU 12 that controls the entire system and individual components by executing a program, a RAM that stores work data, etc. Random Access Memory) 14, ROM (Read Only Memory) for storing programs, etc. 16, Fixed storage medium 18 such as hard disk, CD—ROM driver 20 for accessing CD-ROM 19, CD—ROM driver 20 and external network ( An interface (IZF) 22 provided between an external terminal (not shown) and a connected external terminal, an input device 24 composed of a keyboard and a mouse, and a CRT display device 26 are provided.
  • the CPU 12, RAMI 4, ROM 16, external storage medium 18, I / F 22, input device 24, and display device 26 are connected to each other via a bus 28.
  • a program for building a tree-type data structure on a storage device and a program for converting the tree-type data structure on the storage device according to the present embodiment are accommodated in a CD-ROM 19, and a CD-ROM driver 20 may be read or stored in the ROM 16 in advance.
  • a CD-ROM driver 20 may be read or stored in the ROM 16 in advance.
  • what is once read from the CD-ROM 19 may be stored in a predetermined area of the external storage medium 18.
  • the program may be supplied from the outside via a network (not shown), an external terminal, and the IZF 22.
  • an information processing apparatus useful for the embodiment of the present invention is connected to the computer system 10. This is realized by executing a program for building a tree-type data structure on a storage device and a program for converting a tree-type data structure on the storage device.
  • FIGS. 2A and 2B are explanatory diagrams of POS data, which is an example of tree format data.
  • Fig. 2A is an example of a visual representation of the data structure (ie topology) and data values of this tree format data
  • Fig. 2B is an example of the same tree format data expressed in XML format.
  • the present invention is directed to the topology of the tree-type data structure, the following description will mainly describe the topology of the tree-type data structure.
  • such a tree-type data structure is expressed by connecting nodes that store data with pointers.
  • the pointer representation has the disadvantage that the pointer value is not necessary. That is, in some cases, a specific node A is stored at a certain address (for example, address 100), and in other cases, the same node A is stored at another address (for example, address 200).
  • a pointer value that is not constant essentially represents the storage address of the node. Therefore, for example, when nodes are connected with a pointer according to the depth priority rule, it is difficult to reconnect these nodes with a pointer according to the width priority rule.
  • An arc list is a list of arcs that represent parent-child relationships between nodes.
  • 3A to 3C are explanatory diagrams of an example of an expression format of a tree type data structure using an arc list.
  • tree type data consisting of 12 nodes with node identifiers (ID) of 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 and 110 The structure is shown.
  • Figure 3A shows the entire tree data structure.
  • the numbers in the center of the circles and heart shapes represent the node ID, and 0, 10> etc.
  • Number of The pair represents an arc.
  • the node ID is not limited to a character string, and may be a numerical value, particularly an integer.
  • 3B shows an arc list from a parent node (From—ID) to a child node (To—ID), and
  • FIG. 3C shows a node list consisting of a list of node ID / node type pairs. Note that there is no need for a node list for the purpose of simply representing a single data structure. In principle, by using such an arc list, it is possible to describe the relationship between nodes directly without using pointers.
  • the arc list is described based on a “parent ⁇ child” relationship in which a child node is associated with a parent node. Therefore, since there are three child nodes 10, 60, and 80 in one parent node, for example, root 'node 0, the same node ID 0 appears three times in the From—ID of the arc list. ing. In other words, since the child node cannot be specified even if the parent node is specified, the arc list is composed of the element From—ID array and the element To—ID array. When using an arc list, a node appears in both the From—ID array and the To—ID array.
  • the parent-child relationship can also be expressed by a “child ⁇ parent” relationship.
  • the parent-child relationship between the nodes is represented by an array of pairs of each of the non-root nodes that are nodes other than the root 'node and the associated parent node.
  • this “child ⁇ parent” relationship there is an important characteristic that cannot be obtained in the case of the “parent ⁇ child” relationship. That is, since only one parent node always corresponds to one child node, the only parent node corresponding to this child node can be immediately identified by specifying the child node.
  • the arc list actually requires only an array of element To-IDs. As a result, the storage capacity for storing the arc list is reduced. This reduction in storage capacity has the effect of reducing the number of accesses to the memory, and as a result, high-speed processing can be realized.
  • FIGS. 4A to 4C are explanatory diagrams of a method for expressing a tree-type data structure based on a “child ⁇ parent” relationship according to an embodiment of the present invention.
  • 4A is an explanatory diagram of the entire tree
  • FIG. 4B is an arc list based on the “child ⁇ parent” relationship.
  • the arc list in FIG. 4B includes the storage area of the parent node for the root node, so that the parent node for the root node is conveniently Is set. However, since there is no parent node corresponding to the root node, the storage area of the parent node for the root node may be excluded from the arc list based on the “child ⁇ parent” relationship, as shown in FIG. 4C. .
  • a parent-child relationship between nodes is expressed by associating a parent node of a non-root 'node with each non-root' node that is a node other than the root 'node. . Then, the node power of the child expressed as “child ⁇ parent” can express the tree topology by hitting the list of parent nodes.
  • a tree-type data structure based on such a "child-to-parent" relationship is routed to the computer system 10 shown in FIG. 1 as shown in FIG.
  • the parent-child relationship defining step 502 for associating the node identifier assigned to the parent node is executed on the RAM 14.
  • Node identifier power of child node The tree topology can be expressed by subtracting (lookup) the node identifier of the parent node.
  • the node definition step uses a numerical value as the node identifier, more preferably a consecutive integer, and more preferably an integer sequence number from 0 or 1.
  • the node identifier of the parent node corresponding to the node is stored from the node identifier, and the address can be easily obtained. Therefore, the node identifier child power of the child node is subtracted. Processing can be performed at high speed.
  • FIGS. 6A to 6C are explanatory diagrams of processing for converting the tree structure type data in the ID format into the tree structure type data in the integer serial number format according to one embodiment of the present invention.
  • FIG. 6A shows tree-structured data with each node assigned an ID number
  • Fig. 6B shows conversion rules
  • Fig. 6C shows a tree structure with each node assigned an integer sequence number.
  • Type data is shown.
  • the conversion rule in this example is a rule that assigns serial numbers with depth priority. Specifically, when there are multiple child nodes, the minimum number is assigned to the first child (top brother) node. Assign a higher number to the youngest child (bottom brother) node, and give the child node a priority over the sibling node. In this example, numbering is performed in ascending order, but numbering may be performed in descending order.
  • FIGS. 7A to 7C are explanatory diagrams of processing for converting tree structure type data in the ID format into tree structure type data in the integer serial number format according to another embodiment of the present invention.
  • Fig. 7A shows tree-structured data with ID numbers assigned to each node
  • Fig. 7B shows conversion rules
  • Fig. 7C shows a tree structure with integer sequential numbers assigned to each node.
  • Type data is shown.
  • the conversion rule of this example is a rule that assigns consecutive numbers with width priority. Specifically, when there are multiple child nodes, the smallest number is assigned to the first child (top brother) node, and the last child ( Assign a higher number to the lowermost brother) node, and give a priority to the sibling node over the child node. In this example, numbers are assigned in ascending order, but numbers may be assigned in descending order.
  • the address at which the stored value related to the node is stored can be subtracted immediately from the node number, that is, in the order of 0 (1).
  • the parent-child relationship as “child ⁇ parent”
  • the parent node can be drawn immediately from the child node, that is, in the order of O (l).
  • a tree-type data structure based on depth priority as shown in FIGS. 6A-C is stored in the computer system 10 shown in FIG.
  • a node definition step in which a child node is given priority over a node of the same generation, and a unique continuous integer is given to a node including a root 'node;
  • An array formed by arranging the integers assigned to each parent node of the non-root node in the order of the integers assigned to each of the non-root nodes that are nodes other than the root node is stored in the storage device.
  • nodes are assigned consecutive integers with depth priority, and the parent-child relationship between nodes is represented by an array of “child-to-parent” relationships.
  • FIG. 8 is a flowchart of node definition processing based on depth priority according to an embodiment of the present invention. This node definition process is performed by computer system 10.
  • step 802 for assigning the number next to the number assigned to that particular node to the child node; If there is more than one child node in a given node, the brother node is assigned the next number after all the descendant nodes of the immediately above brother node are numbered according to the sibling relationship between the child nodes.
  • Step 803 for assigning numbers from the top brother node to the bottom brother node so that
  • FIG. 9 is an explanatory diagram of an array of parent-child relationships based on the “child ⁇ parent” expression created from the depth-first tree-type data structure shown in FIGS. 6A to C according to one embodiment of the present invention. is there.
  • subtree 1 or subtree 2 when the parent-child relationship of nodes assigned consecutive numbers with depth priority is arranged based on the “child ⁇ parent” relationship, the descendant nodes of a node An excellent property that appears in a continuous region is obtained.
  • a value greater than or equal to an integer assigned to a certain node is stored from the array! All descendant nodes of the certain node are specified by extracting the continuous region. Thereby, a node group representing a descendant node of a certain node can be acquired as a continuous block in the array. For example, if the size of a continuous block is m, the processing speed for specifying all descendant nodes of a node is on the order of O (m).
  • the parent-child relationship between nodes can be expressed not only by an array of “child ⁇ parent” relationship but also by an array of “parent ⁇ child” relationship.
  • the parent-child relationship array stores the child node number for each node, the array Aggr for indicating the area, and the child node number is Consists of two stored arrays P ⁇ C.
  • the value of the second element Aggr [1] from the beginning of the array Aggr is "3", which means that the child node number for the node [1] is the element P ⁇ C [3] of the array P ⁇ C It is stored after that !.
  • the node [0] that is, the child node for the root 'node has three elements from the beginning of the array P ⁇ C, P ⁇ C [0] 1, P ⁇ C [1] 6, and P ⁇
  • the power of C [2] is 8.
  • the Aggr value is also obtained for the numbering power of the parent node shown in bold in the figure. This Aggr value represents the starting point of the array P ⁇ C.
  • parent-child relationship based on the expression “parent ⁇ child” can be expressed more simply by two arrays: an array of parent node numbers and an array of corresponding child node numbers.
  • log (n) access time is required, which is inefficient.
  • a tree-type data structure based on breadth-first is stored in the computer system 10 shown in FIG.
  • a node definition step that gives priority to a node of the same generation over a child node and gives a unique continuous integer to a node including a root node;
  • the array formed by arranging the integers assigned to each parent node of the non-root 'node in the order of the integers assigned to each of the non-root' nodes that are nodes other than the root 'node.
  • nodes are given consecutive integers in the breadth-first mode, and the parent-child relationship between nodes is expressed by an array of “child ⁇ parent” relationships.
  • FIG. 11 is a flowchart of node definition processing based on width priority according to an embodiment of the present invention. This node definition process is performed by the computer system 10
  • First 1102 assigning a number to the root node
  • Step 1013 in which a unique integer continuously changing from the number next to the number assigned immediately before from the top brother node to the bottom brother node is assigned in order,
  • FIG. 12 is an explanatory diagram of an array of parent-child relationships based on the “child ⁇ parent” expression created from the breadth-first tree-type data structure shown in FIGS. 7A to C according to one embodiment of the present invention. .
  • the child nodes of a node will appear in the continuous region. Excellent properties are obtained. This is because when the parent-child relationship of nodes assigned consecutive numbers in the breadth-first mode is arrayed based on the “child ⁇ parent” relationship, the number assigned to the parent node is By appearing in the array in order (ascending or descending).
  • a continuous region in which the same value as the integer assigned to a certain node is stored is extracted from the array by using the superior property of the breadth-first mode.
  • all child nodes of the certain node are specified.
  • a child node of a node can be searched using a technique such as binary search, that is, it can be searched in the order of O (log (n)).
  • FIG. 13 is an explanatory diagram of an array of parent-child relationships based on the “parent ⁇ child” expression created for the breadth-first tree-type data structure shown in FIGS. Figure 13—Since there can be multiple child nodes for one parent node, the parent-child relationship array contains an array Ag gr to indicate the area where the child node number for each node is stored, Consists of two arrays P ⁇ C that store node numbers.
  • the value of the second element Aggr [1] from the top of the array Aggr is "3", which means that the child node number for node [1] is the element P ⁇ C [3 of array P ⁇ C ] Indicates that it is stored after that.
  • the child node for node [0] that is, the root node is the three elements from the beginning of the array P ⁇ C, P ⁇ C [0] 1, P ⁇ C [1] 2, and P ⁇ C [2] 3 is inevitable.
  • the Aggr value is also obtained for the numbering power of the parent node shown in bold in the figure. This Aggr value represents the starting point of the array P ⁇ C.
  • the computer system includes a “child ⁇ parent” representation format based on depth priority, a “child ⁇ parent” representation format based on width priority, and a “parent ⁇ child” representation format.
  • the expression format can be converted to FIG. 14 is a diagram showing the relationship of mutual conversion of three expression formats according to one embodiment of the present invention.
  • FIG. 15 is a flowchart of a tree-type data structure construction method realized by a computer system according to an embodiment of the present invention.
  • the computer system 10 includes a step 1510 for assigning a continuously changing integer to all nodes for the first time, and a step 1520 for defining a parent-child relationship between the nodes.
  • a tree-type data structure is constructed on the storage device.
  • the step 1510 of uniquely assigning an integer to all the nodes comprises:
  • Step 1511 for selecting whether to grant is assigned to nodes in either the depth priority mode, which gives priority to child nodes over the same generation node, or the breadth priority mode, which gives priority to nodes in the same generation over child nodes.
  • a step 1512 of searching for nodes with depth priority and assigning numbers to the nodes in the order of search is selected.
  • node number assignment in depth priority mode and node number assignment in width priority mode can coexist in one system, so it is possible to use an appropriate expression format according to the situation.
  • the step 1520 of defining a parent-child relationship between the nodes includes:
  • Step 1521 for selecting whether to define the parent-child relationship in the child-parent representation mode that defines the relationship from the child node to the parent node or the parent-child representation mode that defines the relationship from the parent node to the child node;
  • a sequence of numbers assigned to child nodes corresponding to the parent node is stored in the storage device in the order of numbers assigned to the parent node; 1523;
  • a "child ⁇ parent” expression and a "parent ⁇ child” expression for expressing a parent-child relationship can be selectively used to assign numbers to nodes.
  • Depth priority mode and width priority mode can be selectively used to assign numbers to nodes.
  • FIGS. 16A and 16B are explanatory diagrams of conversion from the depth-first “child ⁇ parent” representation (FIG. 16A) to the width-first “child ⁇ parent” representation (FIG. 16B) according to an embodiment of the present invention.
  • FIG. 17 is a flowchart of a conversion method from the depth-first “child ⁇ parent” expression to the width-first “child ⁇ parent” expression according to one embodiment of the present invention.
  • the parent-child relationship is defined by storing the numbers assigned to the parent nodes corresponding to the child nodes in the storage device of the computer system 10, for example, the RAM 14, in the order of the numbers assigned to the child nodes.
  • the computer system 10 the computer system 10
  • the number of nodes belonging to each generation is determined by determining the generation of each node in the tree-type data structure expressed in the depth priority mode that gives priority to child nodes over nodes of the same generation. Step 1701 for counting
  • FIG. 18A and 18B are explanatory diagrams of the conversion from the breadth-first “child ⁇ parent” representation (FIG. 18A) to the depth-first “child ⁇ parent” representation (FIG. 18B) according to one embodiment of the present invention.
  • FIG. 19 is a flowchart of a conversion method from the width-first “child ⁇ parent” expression to the depth-first “child ⁇ parent” expression according to one embodiment of the present invention.
  • the parent-child relationship is defined by storing the numbers assigned to the parent nodes corresponding to the child nodes in the storage device of the computer system 10, for example, the RAM 14, in the order of the numbers assigned to the child nodes.
  • the computer system 10 the computer system 10
  • Counting the number of descendants of each node in the tree-type data structure expressed in breadth-first mode that gives priority to nodes of the same generation over child nodes and the number to be given to the parent node Is added to the number of sibling nodes derived from the same parent node as that node and the number of sibling nodes numbered before that node and the number of descendants of the sibling node.
  • a breadth-first “child ⁇ parent” representation to a depth-first “child ⁇ parent” table According to another embodiment of the present invention, a breadth-first “child ⁇ parent” representation to a depth-first “child ⁇ parent” table.
  • the conversion to the present can be realized not only by the high-speed conversion method described with reference to FIG. 19 but also by a conversion method using search. Below, the conversion method using this search is demonstrated.
  • the parent-child relationship based on the breadth-first "child-to-parent" expression is such that the numbers assigned to the parent nodes corresponding to the child nodes are stored in the storage device of the computer system 10, for example, the RAM 14, in the order of the numbers assigned to the child nodes. It is defined by storing.
  • the computer system 10 searches each node of the tree-type data structure expressed in the breadth-first mode in which the node of the same generation is given priority over the child node and assigns the number to the node in depth-first mode.
  • the conversion array created by the conversion method based on this search is the same as the conversion array created in the example of the previous high-speed conversion method.
  • FIG. 20 is a flowchart of the conversion method from the “child ⁇ parent” expression to the “parent ⁇ child” expression according to one embodiment of the present invention.
  • the numbers assigned to the parent node corresponding to the child node are stored in the storage device of the computer system 10, for example, the RAM 14, in the order of the numbers assigned to the child node. Is defined by The computer system 10
  • a step 2001 for counting the number of times the number assigned to the node appears as an element of the first array
  • Step 2003 for sequentially storing the node numbers
  • the parent-child relationship is converted from the “child ⁇ parent” representation format to the “parent ⁇ child” representation format.
  • the parent-child relationship after conversion is defined by storing the numbers assigned to the child nodes corresponding to the parent node in the storage device as the elements of the second array in the order of the numbers assigned to the parent node. Is done.
  • the depth-first or width-first property is preserved as it is, so the "child-> parent” expression based on the depth-first mode is changed to the "parent-> child” expression based on the depth-first mode.
  • the “child ⁇ parent” expression based on the breadth-first mode is converted to the “parent ⁇ child” expression based on the breadth-first mode.
  • FIG. 21 is a flowchart of a conversion method from a breadth-first “child ⁇ parent” representation to a depth-first “child ⁇ parent” representation according to one embodiment of the present invention.
  • the parent-child relationship is obtained by storing the numbers given to the child nodes corresponding to the parent node in the order of the numbers given to the parent node in the storage device of the computer system 10, for example, the RAM 14, as the elements of the first array. Is defined.
  • Computer system 10
  • the parent-child relationship is converted from the “parent ⁇ child” representation format to the “child ⁇ parent” representation format.
  • the parent-child relationship after conversion is defined by storing the numbers assigned to the parent nodes corresponding to the child nodes in the order of the numbers assigned to the child nodes in the storage device as elements of the second array. Is done.
  • the depth-first or width-first property is preserved as it is, so the "parent->child” expression based on the depth-first mode is changed to the "child->parent” expression based on the depth-first mode.
  • the "parent->child” representation based on the breadth-first mode is converted to the "child->parent” representation based on the breadth-first mode.
  • node insertion which is an operation for editing the topology of the tree-type data structure.
  • FIGS. 22A to 22C are explanatory diagrams of node insertion in a tree-type data structure according to an embodiment of the present invention.
  • Figure 22A shows master-side data in depth-first mode in which nodes are numbered with depth priority
  • Figure 22B shows slave-side data in depth-first mode
  • Figure 22C shows slave-side data.
  • the result of inserting some nodes into the master data is expressed in depth priority mode. More specifically, the descendant nodes of node 1 of the slave side data (node 2, node 3 and node 4) are inserted as descendant nodes of node 5 of the master side data, and as descendants of node 9 of the master side data.
  • the descendant nodes (node 6 and node 7) of the node 5 of the slave side data are inserted, and all nodes are renumbered with depth priority. Since the descendant node is inserted into node 5 of the master side data, and the numbers of node 6, node 7 and node 8 are assigned to the inserted descendant node, the number of node 6 of the master side data is assigned to node 9. It will be reattached. Similarly, node 6, node 7, node 8, and node 9 of the master side data are renumbered like node 9, node 10, node 11, and node 12, respectively.
  • the current node 12 of the master side data (node 9 before renumbering) is inserted with node 6 and node 7 of the slave side data, and renumbered as nodes 13 and 14 respectively. Is done. As a result, the nodes 10 and 11 of the original master data are renumbered as the nodes 15 and 16 respectively.
  • the slave node 6 and the child node 7 of the slave side data node 5 are the slave nodes inserted before the child node 10 and the child node 11 of the node 9 of the master side data. It can be configured to be inserted between 10 and the child node 11, or can be configured to be inserted after the child node 10 and the child node 11.
  • FIG. 23 is a flowchart of a node insertion method according to an embodiment of the present invention.
  • a slave-side data node having a tree-type data structure is inserted into master-side data having a tree-type data structure.
  • a unique node identifier is assigned to each node including the root node in each of the master side data and the slave side data.
  • the node identifier given to each non-root 'node that is a node other than the' root 'node is associated with the node identifier given to each parent node of the non-root' node, so that Parent-child relationship is expressed.
  • the node insertion method adopts a tree-type data structure of “child ⁇ parent” expression, and assigns descendant nodes of slave side specific nodes of slave side data to mass The data is inserted into the master side data as a descendant node of the master side specific node of the master side data.
  • the parent-child relationship between the nodes is represented in a “child ⁇ parent” representation format based on the depth priority mode, and the node identifier is a continuous integer.
  • the tree-type data structure shown in FIGS. 22A to 22C can be described in the “child ⁇ parent” representation format based on the depth-first mode as shown in FIGS. 24A, B, and C are explanatory diagrams of the “child ⁇ parent” representation format based on the depth-first mode corresponding to the data structures of FIGS. 22A, B, and C, respectively.
  • the unique node identifiers assigned to the master-side data and slave-side data nodes are given priority over child nodes over nodes of the same generation. It is a continuous integer.
  • the parent-child relationship between the nodes is assigned to each parent node of the non-root 'node, which is associated in the order of the node identifier assigned to each of the non-root' nodes. It is expressed by an array that has a strong node identifier. In other words, the parent-child relationship between the nodes is expressed in a “child ⁇ parent” representation format based on the depth priority mode.
  • step 2301 for specifying the descendant node of the slave side specific node in the slave side data the node identifier assigned to the slave side specific node in the array representing the parent-child relationship of the slave side data is stored. All the descendant nodes of the slave side specific node are extracted from the next position of the slave side by extracting a continuous area in which a value equal to or greater than the value of the node identifier assigned to the slave side specific node is stored. Is identified. As described with reference to FIG. 9, this descendant node is specified by arranging a parent-child relationship of nodes assigned consecutive numbers with depth priority based on a “child ⁇ parent” relationship. When descendants of a node appear in a continuous region, they are based on the superior nature of depth-first mode.
  • step 2302 for inserting the descendant node of the slave side specific node into the master side data includes the node in the master side data and the descendant of the slave side specific node in the slave side data.
  • the node identifier is given to the node in preference to the child node of the same generation, and An array that expresses the parent-child relationship of the descendant nodes of the slave side node in the slave side data in the array that expresses the parent-child relationship between the nodes of the master side data by associating the node identifiers of the corresponding parent nodes in the order of the node identifiers Generating an array representing a new parent-child relationship in which is inserted.
  • the parent-child relationship is depth-first, and the node identifier is a continuous integer.
  • the descendant nodes are determined by the continuous area, and an array expressing a new parent-child relationship is generated for the descendant nodes in the master side data and the slave side data.
  • the step of generating the array representing the new parent-child relationship includes processing up to the insertion point of the descendant node, processing at the insertion point of the descendant node, and processing after the insertion point of the descendant node. It can be realized in 3 steps.
  • FIG. 25 illustrates a new embodiment according to one embodiment of the present invention. It is a flowchart of the process which produces
  • the step of generating an array representing a new parent-child relationship includes the processing step 2501 up to the descendant node insertion point, the processing step 2502 at the insertion point of the descendant node, and the descendant Processing step 2503 after the insertion point of the node.
  • Step 2501 Until the master side specific node appears, a node identifier is given to the child node over the node of the same generation, and the node identifier of the node is assigned to the node of the master side data. Associate the node identifier of the parent node of the node.
  • Step 2502 Assign a node identifier to the master side specific node, and then give priority to the child node over the same generation node as the descendant node of the slave side specific node as the descendant node of the master side specific node And assign the node identifier of the parent node to each of the descendant nodes.
  • Step 2503 If a node identifier is still assigned to the master-side data and there is a remaining node, the node identifier is given priority over the child node over the node of the same generation for the remaining node. And the node identifier of the parent node is associated with the node identifier of the remaining node.
  • step 2501 and step 2502 above when the descendant nodes of two or more nodes of the slave side specific node 1 and the slave side specific node 2 are simultaneously inserted into the master side data, Repeat step 2501 and step 2502 above until there is no master side specific node corresponding to the slave side specific node, and then execute step 2503.
  • the node insertion for manipulating the topology of the tree-type data structure is an operation for reattaching the node identifier (for example, the node number) given to the node.
  • a node type representing the type of the node and a node value representing the value are associated with the node.
  • These node types and node values are specified by associating a pointer to the node information storage area in which information describing the node type and node value is stored with the node identifier, as described with reference to FIGS. 2A and 2B. can do. [0102] FIG.
  • the node 2 on the slave side becomes the node 6 after the insertion process by inserting it as a descendant node of the node 5 on the master side.
  • the actual value of node 2 on the slave side is stored in the node information storage area of address aaaa, as shown in FIG.
  • the address aaaa is copied to the node 6 pointer generated by the insertion.
  • the inserted node can be accompanied by a pointer for designating the corresponding node information storage area.
  • FIG. 27 is an overall explanatory diagram of node insertion processing according to an embodiment of the present invention.
  • the descendant nodes (node 2, node 3 and node 4) of the slave side node 1 are inserted as descendant nodes of the master side node 5 (master side specific node 1).
  • the descendant nodes (node 6 and node 7) of the slave side node 5 are inserted as descendant nodes of the master side node 9 (master side specific node 2).
  • the slave-side specific node and the master-side specific node used for the node insertion process are matching nodes.
  • the slave side specific node and the master side specific node are matched. It is determined that In the example of FIG. 27, the slave side node 1 and the master side node 5 are both drawn in a heart shape, and the node types are the same. Although not shown, the node values held by the nodes also match. Similarly, the node 5 on the slave side and the node 3 on the master side have the same node type, and the node values to be held also match.
  • These slave side specific nodes and master side specific nodes may be designated in advance by the user, or may be automatically determined according to the conditions set by the user.
  • Fig. 27 the master-side, slave-side, and after node insertion operations are shown as a parent-child relationship in the "child-to-parent" representation format based on the solid data structure and the depth-first mode. Representing array And are shown.
  • the tree-type data structure after the node insertion process and the array representing the parent-child relationship also show how the node number that is the node identifier changes.
  • a node on the master side and a node on the slave side are matched to determine a node to be subjected to the node insertion process, that is, a specific node and another specific node.
  • a node list that is, an array representing a parent-child relationship in the “child ⁇ parent” representation format based on the depth priority mode is synthesized.
  • the node list synthesizing process includes a process for identifying descendant nodes, a process up to the first insertion point, an insertion process, a process up to the next insertion point, a second insertion process, and a process after the insertion point. ,including.
  • FIGS. 28A to 28F are explanatory diagrams of processing for identifying a descendant node according to an embodiment of the present invention.
  • it is necessary to specify the range of descendant nodes (ie, subtrees) of each slave side specific node.
  • a specific node that is, a descendant node for the vertex node, exists in a continuous range after the vertex node. Therefore, in the process of specifying descendant nodes, a continuous range after this vertex node is found.
  • the bold arrows are for explaining the processing for the slave side specific node 1 and the master side specific node 1
  • the white arrows are the slave side specific node 2 and the master side. This is an arrow for explaining the process for the side specific node 2.
  • step 2 if the content of ⁇ 3 ⁇ is checked, it is 2, which is a value equal to or higher than vertex node 1, so that node 3 belongs to vertex node [1].
  • step 3 when the content of ⁇ 4 ⁇ is checked, it is 1 and is a value equal to or higher than vertex node 1, so that node 4 belongs to vertex node [1].
  • step 4 when the contents of ⁇ are checked, it is 0, which is smaller than vertex node 1, so that node 5 (and subsequent nodes) does not belong to vertex node [1].
  • the check for vertex node 1 ends here, indicating that the end of the node number of the node belonging to vertex node [1] is ⁇ 4 ⁇ .
  • steps 5 and 6 when a node belonging to the vertex node [5] is checked, it is found that the node number of the node belonging to the vertex node [5] ends with ⁇ 7 ⁇ .
  • FIG. 29 is an explanatory diagram of an initial state of insertion processing according to an embodiment of the present invention.
  • FIGS. 30A to 30C are explanatory diagrams of processing up to the first insertion point according to one embodiment of the present invention.
  • Procedure 1 (1) Perform processing for node 0 on the master side (Fig. 30A).
  • the conversion array [0] address 0 of the conversion array
  • nlns represents the number of nodes where the slave side force is also inserted.
  • the value stored in the conversion array indicates how the node number on the master side was reassigned by the node insertion operation.
  • the conversion array insertion pointer and the synthesis result array insertion pointer are initially set at the head (ie, address 0), and when a value is stored in the conversion array and the synthesis result array, each is advanced to the next address.
  • Step 3 Continue the same operation as step 2 up to the insertion point, that is, node 5 on the master side (Fig. 30C).
  • FIG. 31 is an explanatory diagram of an insertion process at the first insertion point according to an embodiment of the present invention.
  • step 4 shown in the figure the value of nlns is increased by the number of inserted nodes, that is, by 3.
  • step 4 add the offset determined by the following formula to the node numbers (2, 3 and 4) of the three descendant nodes of the specific node 1 on the slave side, and the corresponding synthesis result array [6], synthesis result array Store sequentially in [7] and synthesis result array [8]. here,
  • the insertion pointer address of the synthesis result array is fixed at 6 when calculating the offset.
  • FIG. 32 is an explanatory diagram of processing up to the next insertion point according to an embodiment of the present invention.
  • step 5 repeat the same operation as in step 2 until the next insertion point.
  • i represents the node number on the master side.
  • the conversion array [j] with the contents j of the C ⁇ P array [i] on the master side as the address, and store the contents of the conversion array [j] in the synthesis result array [conversion array [i]] .
  • FIG. 33 is an explanatory diagram of the insertion process at the second insertion point according to one embodiment of the present invention.
  • offsets determined by the following formulas are added to the node numbers (6 and 7) of the two descendant nodes of the specific node 2 on the slave side, and the corresponding synthesis result array [13] and synthesis result array [14] ] Sequentially.
  • the insertion pointer address of the synthesis result array is fixed to 13. It has been determined.
  • FIG. 34 is an explanatory diagram of processing after the insertion point according to one embodiment of the present invention.
  • step 7 shown in the figure the same operation as step 2 and step 5 is repeated.
  • i represents the node number on the master side.
  • the conversion array [j] with the contents j of the C ⁇ P array [i] on the master side as the address, and store the contents of the conversion array [j] in the synthesis result array [conversion array [i]] To do.
  • FIG. 35 is an explanatory diagram of the result of the node insertion process according to one embodiment of the present invention. The figure shows a tree structure based on node numbers based on the depth-first mode and a parent-child relationship based on the corresponding depth-first “child ⁇ parent” expression.
  • FIG. 36 is a block diagram of an information processing apparatus 3600 that constructs a tree-type data structure according to an embodiment of the present invention.
  • the information processing device 3600 includes a storage unit 3601 that stores data representing a tree-type data structure, a descendant node specification unit 3602 that specifies a descendant node of a slave side specific node in the slave side data, a slave side As a descendant node of the master side specific node in the master side data corresponding to the specific node, A node insertion unit 3603 that inserts information into the master side data and stores information representing a new parent-child relationship in the storage unit 3601.
  • the unique node identifier assigned to a node is a continuous integer assigned in favor of a child node over a node of the same generation.
  • the parent-child relationship between the nodes is related to each parent node of the non-root 'node associated in the order of the node identifier assigned to each of the non-root' nodes. It is expressed by an array of assigned node identifiers.
  • the descendant node specifying unit 3602 sends the slave side specific node to the slave side specific node from the position next to the position where the node identifier assigned to the slave side specific node in the array expressing the parent-child relationship of the slave side data is stored. All descendant nodes of the slave side specific node are specified by extracting the continuous area where the value of the assigned node identifier or more is stored.
  • the node insertion unit 3603 identifies the slave side node in the master side data and the descendant node in the slave side node as the descendant node in the slave side node in the master side data.
  • the master side data An array representing a new parent-child relationship is generated by inserting an array representing the parent-child relationship of the descendant node of the slave-side specific node in the slave-side data into the array representing the parent-child relationship between the nodes.
  • the node insertion unit 3603 has a node determination unit 3631 for determining whether the node of the master side data is a master side specific node; If the node of the master side data is not a master side specific node, the node identifier is given to the node in favor of the child node over the node of the same generation, and the node identifier of the parent node of the node is assigned to the node identifier of the node If the node on the master side is a master side specific node, a node identifier is assigned to the master side specific node, and then as a descendant node of the master side specific node, the slave side A node identifier is assigned to a descendant node of a specific node in preference to a child node over a node of the same generation, and the child node of that descendant node is assigned.
  • FIG. 1 is a block diagram of a computer system that handles a tree-type data structure useful for an embodiment of the present invention.
  • FIGs. 2A and 2B are explanatory diagrams of POS data, which is an example of tree format data.
  • Fig. 2A is a visual representation of the data structure (ie, topology) and data values of this tree format data.
  • Figure 2B shows an example of the same tree format data expressed in XML format.
  • FIGS. 3A to 3C are explanatory diagrams of an example of an expression format of a tree-type data structure using an arc list.
  • FIGS. 4A to 4C are explanatory diagrams of a method for expressing a tree-type data structure based on a “child ⁇ parent” relationship according to an embodiment of the present invention.
  • FIG. 5 is a flowchart of a method for constructing a tree-type data structure on a storage device according to an embodiment of the present invention.
  • FIGS. 6A to 6C are diagrams for explaining processing for converting tree structure type data in the ID format into tree structure type data in the integer serial number format according to one embodiment of the present invention.
  • FIGS. 7A to 7C are explanatory diagrams of processing for converting tree structure type data in an ID format into tree structure type data in an integer serial number format according to another embodiment of the present invention.
  • FIG. 8 is a flowchart of node definition processing based on depth priority according to an embodiment of the present invention.
  • FIG. 9 is an explanatory diagram of an array of parent-child relationships based on the “child ⁇ parent” expression created according to one embodiment of the present invention.
  • FIG. 10 is an explanatory diagram of an array of parent-child relationships based on a “parent ⁇ child” expression created from the depth-first tree-type data structure shown in FIGS.
  • FIG. 11 is a flowchart of node definition processing based on width priority according to an embodiment of the present invention.
  • FIG. 12 shows a parent-child relationship based on a “child ⁇ parent” expression created according to an embodiment of the present invention. It is explanatory drawing of the arrangement
  • FIG. 13 is an explanatory diagram of an array of parent-child relationships based on a “parent ⁇ child” expression created from the depth-first tree-type data structure shown in FIGS.
  • FIG. 14 is a diagram showing the relationship of mutual conversion of three expression formats according to one embodiment of the present invention.
  • FIG. 15 is a flowchart of a method for constructing a tree-type data structure realized by a computer system according to an embodiment of the present invention.
  • FIGS. 16A and 16B are explanatory diagrams of conversion from a depth-first “child ⁇ parent” representation to a width-first “child ⁇ parent” representation according to one embodiment of the present invention.
  • FIG. 17 is a flowchart of a conversion method from a depth-first “child ⁇ parent” expression to a width-first “child ⁇ parent” expression according to one embodiment of the present invention.
  • FIGS. 18A and 18B are explanatory diagrams of conversion from a breadth-first “child ⁇ parent” representation to a depth-first “child ⁇ parent” representation according to one embodiment of the present invention.
  • FIG. 19 is an explanatory diagram of a process for converting a parent-child relationship of nodes based on breadth priority into a parent-child relationship of nodes based on depth priority according to an embodiment of the present invention.
  • FIG. 20 is a flowchart of a conversion method from a “child ⁇ parent” expression to a “parent ⁇ child” expression according to one embodiment of the present invention.
  • FIG. 21 is a flowchart of a conversion method from a “parent ⁇ child” expression to a “child ⁇ parent” expression according to one embodiment of the present invention.
  • FIGS. 22A to 22C are explanatory diagrams of node insertion in the tree-type data structure according to one embodiment of the present invention.
  • FIG. 23 is a flowchart of a node insertion method according to an embodiment of the present invention.
  • FIGS. 24A to 24C are explanatory diagrams of the depth-first “child ⁇ parent” expression format corresponding to FIGS. 22A to 22C, respectively.
  • FIG. 25 is a flowchart of a process for generating an array expressing a new parent-child relationship according to an embodiment of the present invention.
  • FIG. 26 is an explanatory diagram showing an example of how to handle substantial values of nodes in the node insertion processing according to one embodiment of the present invention.
  • FIG. 27 is an overall explanatory diagram of node insertion processing according to an embodiment of the present invention.
  • FIGS. 28A to F are explanatory diagrams of a process for specifying a descendant node according to an embodiment of the present invention.
  • FIG. 29 is an explanatory diagram of an initial state of insertion processing according to an embodiment of the present invention.
  • FIG. 30A to FIG. 30C are explanatory diagrams of processing up to the first insertion point according to one embodiment of the present invention.
  • FIG. 31 is an explanatory diagram of an insertion process at the first insertion point according to an embodiment of the present invention.
  • FIG. 32 is an explanatory diagram of processing up to the next insertion point according to one embodiment of the present invention.
  • FIG. 33 is an explanatory diagram of an insertion process at the second insertion point according to an embodiment of the present invention.
  • FIG. 34 is an explanatory diagram of processing after the insertion point according to one embodiment of the present invention.
  • FIG. 35 is an explanatory diagram of the result of node insertion processing according to an example of the present invention.
  • FIG. 36 is a block diagram of an information processing apparatus that performs a node insertion operation according to an embodiment of the present invention.

Landscapes

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

Abstract

 本発明は、効率的にツリー型データ構造にノードを挿入することができるノード挿入方法の提供を目的とする。情報処理装置は、ツリー型データ構造のノード間の親子関係を、子ノードのノード識別子に親ノードのノード識別子を対応付ける「子→親」関係によって表現し、スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定し、スレイブ側特定ノードに対応したマスタ側データ中のマスタ側特定ノードの子孫ノードとして、スレイブ側特定ノードの子孫ノードをマスタ側データに挿入する。

Description

明 細 書
ノードを挿入する方法、 装置及びプログラム
技術分野
[0001] 本発明はツリー型データ構造を取り扱う方法、特に、ツリー型データ構造にノードを 挿入する方法に関する。また、本発明は、係る方法を実施する情報処理装置に関す る。更に、本発明は、係る方法を実行するためのプログラム、及び、このプログラムを 記録した記録媒体に関する。
背景技術
[0002] データベースは種々の用途に用いられている力 中規模ないし大規模システムに おいては、論理的な矛盾が排除できるリレーショナルデータベース (RDB)の使用が 主流となっている。たとえば、 RDBは飛行機の座席予約等のシステムに利用されて いる。この場合、キー項目を指定することにより、(多くの場合 1件の)ターゲットを迅速 に検索することもでき、或いは、予約の確定、キャンセル或いは変更などを行うことが できる。また、各便の座席数はせいぜい数百であるため、特定の航空便の空席数を 求めることも可能である。
[0003] このような RDBは、表形式データの取り扱いに適している力 ツリー形式データの 取り扱いには適していないことが知られている(例えば、非特許文献 1を参照。 ) o
[0004] 更に、アプリケーションの中には、表形式による表現よりもツリー形式による表現の 方が適しているものが存在する。特に、近年、イントラネットやインターネットのアプリケ ーシヨンのデータ標準として、ツリー型データ構造を採用する XMLが普及している( XMLの詳細については、例えば、非特許文献 2を参照。 )0
[0005] しかし、ツリー型データ構造の取り扱い、例えば、ツリー形式データの検索は、一般 に、大変効率が悪い。この効率の悪さの第 1の理由は、データが各所のノードに分散 して存在するため、データの存在すべき場所を直ちに特定することが困難である点 にある。 RDBでは、例えば、「年齢」というデータは、あるテーブルの「年齢」という項 目だけに格納されている。しかし、ツリー型データ構造では、「年齢」というデータを保 持するノードが各所に散在しているので、一般的には、ツリー型データ構造の全体を 調べなければ、該当するデータを検索することができない。
[0006] 効率の悪さの第 2の理由は、検索の結果を表現するために時間が力かるという点に ある。検索にヒットしたノード群を表現しょうとすると、屡々、そのノードの子孫にあたる ノードも表現しなければならな 、が、 RDBMSとは異なりデータ構造が非定型である ため、子孫ノードを表現するために時間が力かる。
[0007] そこで、データベースの主流である RDBの利点をいかすため、従来、ツリー型デー タ構造をデータベース化するとき、ツリー形式データを RDB化する方法 (例えば、特 許文献 1を参照。)が提案されている。 RDBでは、データはテーブル (表)に分解して 保持される。そのため、実際のツリー形式データを RDB化するには、ツリー形式デー タをテーブルに押し込める必要がある。しかし、様々のツリー型データ構造を取り扱う ためには、その構造毎に個別にデータをテーブルに押し込め、システム設計を行わ なければならない。したがって、 RDBに基づくシステム構築は非常に手間の力かる作 業である。
[0008] これに対して、ツリー形式データ、特に、 XMLデータをそのままの形でデータべ一 ス化する方法も提案されている。ツリー型データ構造の場合、一つのノードに子孫ノ ードをぶら下げることができ、多様な表現が可能であるため、システム設計の手間を 大幅に削減することができる。したがって、 XMLのようなツリー構造を取り扱える技術 を核として、ツリー形式データを処理することへのニーズが高まって 、る。
[0009] XMLデータをそのままの形でデータベース化する方法の一例のアプローチは、ッ リー構造に記入されているデータのコピーを取り出し、例えば、「年齢」という項目であ れば、「年齢」の検索用インデックスデータを別途保持する(例えば、特許文献 2を参 照。;)。これにより、データ自身に属性を付加できるという XMLデータのメリットを十分 に活用すると共に、タグを用いて表現された各項目の関係構造をそのまま記憶できる ようにしている。
[0010] また、 XML文書をツリー構造でメモリ上に展開するための DOMと呼ばれるォブジ エタトモデルのインタフェースが公開されている(例えば、非特許文献 3を参照。)。 特許文献 1 :特開 2003— 248615号公報
特許文献 2:特開 2001— 195406号公報 非特許文献 1 :株式会社セック、 "Karearea White Paper", [online], [平成 16年 2月 1 9日検索」、インターネット < URL:http://www.sec. co.jp/products/karearea/ 非特許文献 2 :W3C、 "Extensible Markup Language (XML) 1.0 (Third Edition)"ゝ [onl ine]、 2004年 2月 4日、 [平成 16年 2月 19日検索]、インターネットく URL:http:〃 ww w.w3.org/TR/2004/REC-xml-20040204/ >
非特許文献 3 :R. ァラン ヮイク、ブラッド ルーペン、サルタン ルーマン、「プログ ラミング XML」、 日経 DPソフトプレス、 2002年、 p.59— 84
発明の開示
発明が解決しょうとする課題
[0011] しかし、上記の検索用インデックスデータを別途保持するようなアプローチでは、少 なくともデータは二重に保持され、かつ、インデックスを作成するコスト及びインデック スを格納するためのデータ領域が必要となり、大規模なデータを保持する上で不利 である。
[0012] このようなメカニズムによって、実際に検索を行い、ノードを特定したとしても、そのノ ードを表現するためには時間がかかる。また、このメカニズムは、ノード間の関係を問 題とする検索 (例えば、祖先に「60歳」 、う「年齢」を含み、子孫に「1歳」 、う「年齢 」を含むツリーの抽出)には利用できない。
[0013] このような従来技術の根本的な問題点は、個々のデータのみに着目し、データを蓄 えたノード間をポインタで接続することによりツリー型データ構造が表現されているた め、データ間の関係、例えば、親子、祖先、子孫、兄弟 (シブリング)、世代などの関 係を効率的にトレースすることができないことにある。換言すると、ポインタは、その値 が一定しないため、データの格納アドレスを示すという用途にし力使用できず、ノード 間の関係を直接的に表現することができない。その結果として、従来技術では、ッリ 一型データ構造のトポロジーを編集すること、特に、ツリー構造型データのあるノード に子孫ノードを挿入することが困難であった。また、上記の DOMは、ツリー型データ 構造のトポロジーを編集する操作のインタフェースを規定するだけであり、操作の具 体的手法を規定するものではな 、。
[0014] そこで、本発明は、効率的にツリー型データ構造にノードを挿入することができる方 法、情報処理装置、プログラム、および、プログラムを記録した記録媒体の提供を目 的とする。
課題を解決するための手段
[0015] 上記目的を達成するため、本発明は、ツリー型データ構造を構成するノード間の親 子関係を、親ノードに子ノードを対応付ける「親→子」関係ではなぐ子ノードに親ノ ードを対応付ける「子→親」関係によって表現すると!、う親子関係表現に基づ!、て、 ツリー型データ構造のマスタ側データに、ツリー型データ構造のスレイブ側データか らのノードを挿入する。
[0016] したがって、本発明によれば、ツリー型データ構造をもつマスタ側データにツリー型 データ構造をもつスレイブ側データのノードを挿入するノード挿入方法は、
前記マスタ側データ及び前記スレイブ側データのそれぞれにお 、て、ルート ·ノード を含むノードに固有のノード識別子が付与され、前記ルート'ノード以外のノードであ る非ルート'ノードの各々に付与されたノード識別子に前記非ルート'ノードの各々の 親ノードに付与されたノード識別子が関連付けられ、これにより、ノード間の親子関係 が表現され、
当該ノード挿入方法は、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステップと 前記スレイブ側特定ノードに対応した前記マスタ側データ中のマスタ側特定ノード の子孫ノードとして、前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側デー タに挿入するステップと、
を含む。
[0017] 従来力 知られている「親→子」関係によって親子関係を表現する場合、一つの親 ノードに複数の子ノードが対応する場合があるので、親ノードと子ノードの二つの要 素を特定しなければ親子関係を定義できない。即ち、親ノードを特定しても、その親 ノードと親子関係にある子ノードを特定することができない。これに対して、本発明の ように「子→親」関係によって親子関係を表現する場合、一つの子ノードには必ず唯 一の親ノードが対応するので、子ノードを特定することによって、この子ノードに対応 する唯一の親ノードを直ちに特定することができる。これにより、マスタ側データのマ スタ側特定ノードと、スレイブ側データのスレイブ側特定データとを指定して、マスタ 側特定ノードの子孫ノードとして、スレイブ側特定データの子孫ノードを挿入すること ができる。
[0018] 本発明の好ましい実施態様では、「子→親」表現による親子関係は、同じ世代のノ ードよりも子ノードを優先する深さ優先モードで、ノード識別子としてノードに付与され た連続する整数の配列によって表現される。このため、好ましい実施態様に力かるノ ード挿入方法において、前記ノードに付与された固有のノード識別子は、同じ世代の ノードよりも子ノードを優先して付与された連続する整数である。
[0019] そして、スレイブ側データのスレイブ側特定ノードの子孫ノードを、親子関係を表現 する配列の連続領域によって判定し、マスタ側データと、スレイブ側特定ノードの子 孫ノードと、について新たな親子関係を表現する配列を生成する。このため、より好ま しい実施態様において、ノード挿入方法は、
前記マスタ側データ及び前記スレイブ側データのそれぞれにお 、て、前記ノード間 の親子関係は、前記非ルート'ノードの各々に付与されたノード識別子の順に関連付 けられた前記非ルート'ノードの各々の親ノードに付与されたノード識別子力 なる配 列によって表現され、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステップは 、前記スレイブ側データの前記親子関係を表現する配列中の前記スレイブ側特定ノ ードに付与されたノード識別子が格納されて 、る位置の次の位置から、前記スレイブ 側特定ノードに付与されたノード識別子の値以上の値が格納されている連続領域を 抽出することにより、前記スレイブ側特定ノードの全ての子孫ノードを特定するステツ プを含む。
[0020] また、別の好ま 、実施態様にぉ 、て、ノード挿入方法は、前記スレイブ側特定ノ ードの前記子孫ノードを前記マスタ側データに挿入するステップは、前記マスタ側デ ータ中のノードと前記スレイブ側データ中の前記スレイブ側特定ノードの前記子孫ノ ードに、前記スレイブ側特定ノードの前記子孫ノードが前記マスタ側データ中の前記 マスタ側特定ノードの子孫ノードに挿入される順序で、同じ世代のノードよりも子ノー ドを優先してノード識別子を付与し、当該ノード識別子の順に対応する親ノードのノ ード識別子を関連付けることにより、前記マスタ側データのノード間の親子関係を表 現する配列に前記スレイブ側データ中の前記スレイブ側特定ノードの前記子孫ノー ドの親子関係を表現する配列が挿入された新たな親子関係を表現する配列を生成 するステップを含む。
[0021] このように、ノード識別子を連続する整数で表すことによって、ノード識別子から、そ のノードに対応する親ノードのノード識別子が格納されているアドレスを簡単に取得 することができるので、子ノードのノード識別子力 親ノードのノード識別子を引く処 理を高速ィ匕することができる。また、深さ優先で連続番号が付与されたノードの親子 関係を「子→親」関係に基づいて配列表現すると、あるノードの子孫ノードが連続領 域に出現するという優れた性質が得られるので、この性質を利用して、スレイブ側特 定ノードの子孫ノードを特定することができる。
[0022] さらに、好ましい実施態様においては、上記ノード挿入方法において、
前記新たな親子関係を表現する配列を生成するステップは、
前記マスタ側データのノードについて、前記マスタ側特定ノードが現れるまで、同じ 世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当該ノード 識別子に当該ノードの親ノードのノード識別子を関連付けるステップと、
前記マスタ側特定ノードにノード識別子を付与し、前記マスタ側特定ノードの子孫ノ ードとして、前記スレイブ側特定のノードの前記子孫ノードに、同じ世代のノードよりも 子ノードを優先してノード識別子を付与し、当該子孫ノードのそれぞれにその親ノー ドのノード識別子を関連付けるステップと、
前記マスタ側データに未だノード識別子が付与されていない残りのノードが存在す る場合、当該残りのノードについて、同じ世代のノードよりも子ノードを優先してノード 識別子を付与し、当該残りのノードの当該ノード識別子に親ノードのノード識別子を 関連付けるステップと、
を含む。
[0023] これにより、新たな親子関係を表現する配列は、挿入点までの処理と、挿入点にお ける処理と、挿入点の後の処理の 3ステップで生成することができる。 [0024] また、本発明によれば、上述したようなノード挿入方法を実施する情報処理装置が 提供される。
[0025] 本発明の目的は、ツリー型データ構造をもつマスタ側データ及びツリー型データ構 造をもつスレイブ側データを記憶する記憶手段を含み、
前記記憶手段に記憶された前記マスタ側データ及び前記スレイブ側データのそれ ぞれは、ルート'ノードを含むノードに固有のノード識別子が付与され、前記ルート'ノ ード以外のノードである非ルート'ノードの各々に付与されたノード識別子に前記非 ルート'ノードの各々の親ノードに付与されたノード識別子が関連付けられ、これによ り、ノード間の親子関係が表現されている、
情報処理装置であって、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定する子孫ノード 特定手段と、
前記スレイブ側特定ノードに対応した前記マスタ側データ中のマスタ側特定ノード の子孫ノードとして、前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側デー タに挿入し、新たな親子関係を表現する情報を前記記憶手段に格納するノード挿入 手段と、
を含む、
情報処理装置によって達成される。
[0026] また、好ま U、実施態様にぉ 、ては、上記情報処理装置にお!、て、前記ノードに付 与された固有のノード識別子は、同じ世代のノードよりも子ノードを優先して付与され た連続する整数である。
[0027] より好ましい実施態様においては、上記情報処理装置において、
前記マスタ側データ及び前記スレイブ側データのそれぞれにお 、て、前記ノード間 の親子関係は、前記非ルート'ノードの各々に付与されたノード識別子の順に関連付 けられた前記非ルート'ノードの各々の親ノードに付与されたノード識別子力 なる配 列によって表現され、
前記子孫ノード特定手段は、前記スレイブ側データの前記親子関係を表現する配 列中の前記スレイブ側特定ノードに付与されたノード識別子が格納されて 、る位置 の次の位置から、前記スレイブ側特定ノードに付与されたノード識別子の値以上の値 が格納されて ヽる連続領域を抽出することにより、前記スレイブ側特定ノードの全て の子孫ノードを特定する。
[0028] また、好ま U、実施態様にぉ 、ては、前記ノード挿入手段は、前記マスタ側データ 中のノードと前記スレイブ側データ中の前記スレイブ側特定ノードの前記子孫ノード に、前記スレイブ側特定ノードの前記子孫ノードが前記マスタ側データ中の前記マス タ側特定ノードの子孫ノードに挿入される順序で、同じ世代のノードよりも子ノードを 優先してノード識別子を付与し、当該ノード識別子の順に対応する親ノードのノード 識別子を関連付けることにより、前記マスタ側データのノード間の親子関係を表現す る配列に前記スレイブ側データ中の前記スレイブ側特定ノードの前記子孫ノードの親 子関係を表現する配列が挿入された新たな親子関係を表現する配列を生成する。
[0029] より好ましい実施態様において、
前記ノード挿入手段は、
前記マスタ側データのノードが前記マスタ側特定ノードであるかどうかを判定する手 段と、
前記マスタ側データのノードが前記マスタ側特定ノードではな 、場合、当該ノード に同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当 該ノード識別子に当該ノードの親ノードのノード識別子を関連付ける手段と、 前記マスタ側データのノードが前記マスタ側特定ノードである場合、前記マスタ側 特定ノードにノード識別子を付与し、前記マスタ側特定ノードの子孫ノードとして、前 記スレイブ側特定のノードの前記子孫ノードに、同じ世代のノードよりも子ノードを優 先してノード識別子を付与し、当該子孫ノードのそれぞれにその親ノードのノード識 別子を関連付ける手段と、
を含む。
[0030] また、本発明によれば、上述したようなノード挿入方法をコンピュータに実行させる ためのプログラムが提供される。
[0031] 更に、本発明によれば、上記プログラムを記録した記録媒体が提供される。
発明の効果 [0032] 本発明によれば、ツリー型データ構造のノード間の親子関係は、「子→親」表現に 基づ 、て記述されるので、一つのノードに対して一つの格納場所を設けることにより 親子関係を定義することができる。したがって、ツリー型データ構造を操作する際に アクセスされるメモリの量が低減し、これにより、ノード挿入操作が高速化される。
[0033] 更に、本発明は、深さ優先モードでノードに番号を付与することにより、スレイブ側 特定ノードの子孫ノードのブロックを容易に特定することができるので、ノード挿入操 作がさらに高速化される。
発明を実施するための最良の形態
[0034] 以下、添付図面を参照して、本発明の実施の形態につき説明を加える。
[0035] [コンピュータシステム構成]
図 1は、本発明の実施の形態に力かるツリー型データ構造を取り扱うコンピュータシ ステムのハードウェア構成を示すブロックダイヤグラムである。図 1に示すように、この コンピュータシステム 10は、通常のものと同様の構成であり、プログラムを実行するこ とによりシステム全体および個々の構成部分を制御する CPU12、ワークデータなど を記憶する RAM(Random Access Memory) 14、プログラム等を記憶する ROM(Read Only Memory) 16,ハードディスク等の固定記憶媒体 18、 CD—ROM19をアクセス するための CD— ROMドライバ 20、 CD— ROMドライバ 20や外部ネットワーク(図示 せず)と接続された外部端子との間に設けられたインタフェース (IZF) 22、キーボー ドゃマウスからなる入力装置 24、 CRT表示装置 26を備えている。 CPU12、 RAMI 4、 ROM16、外部記憶媒体 18、 I/F22,入力装置 24および表示装置 26は、バス 2 8を介して相互に接続されて ヽる。
[0036] 本実施の形態にかかる、ツリー型データ構造を記憶装置上に構築するプログラム、 及び、ツリー型データ構造を記憶装置上で変換するプログラムは、 CD— ROM19に 収容され、 CD— ROMドライバ 20に読取られても良いし、 ROM16に予め記憶され ていても良い。また、いったん CD— ROM19から読み出したものを、外部記憶媒体 1 8の所定の領域に記憶しておいても良い。或いは、上記プログラムは、ネットワーク( 図示せず)、外部端子および IZF22を経て外部から供給されるものであっても良い。
[0037] また、本発明の実施の形態に力かる情報処理装置は、コンピュータシステム 10にッ リー型データ構造を記憶装置上に構築するプログラム、及び、ツリー型データ構造を 記憶装置上で変換するプログラムを実行させることにより実現される。
[0038] [ツリー型データ構造]
図 2A、 Bは、ツリー形式データの一例である POSデータの説明図である。図 2Aは 、このツリー形式データのデータ構造 (即ち、トポロジー)及びデータ値を視覚的に表 現した一例であり、図 2Bは、同じツリー形式データを XML形式で表現した一例であ る。図 2A、 Bに示されるようにツリー型データ構造は、ルート'ノード (本例では、 POS データ)力も始めて、各ノードで枝分かれしてリーフ'ノード (端点)に至るノードとァー クの組み合わせによって表現される。各ノードの実体的な値、例えば、店名ノードの 値 ="フランス店〃の格納場所は、店名ノードに関連したポインタで指定される。
[0039] 本発明は、ツリー型データ構造のトポロジーを対象とするため、以下の説明では、 主として、ツリー型データ構造のトポロジーに関して説明する。
[0040] 従来、このようなツリー型データ構造は、データを蓄えたノード間をポインタで接続 すること〖こよって表現されている。しかし、ポインタ表現は、ポインタ値に必然性がな いという欠点がある。即ち、ある場合には特定のノード Aがある番地 (例えば、 100番 地)に格納され、別の場合には同じノード Aが別の番地 (例えば、 200番地)に格納さ れるので、ポインタ値が一定ではなぐポインタ値は、本質的にノードの格納アドレス を表現するに過ぎない。そのため、例えば、ノードが深さ優先の規則に従ってポイン タで接続されて ヽる場合、これらのノードを幅優先の規則に従ってポインタで再接続 することは困難である。
[0041] これに対して、本発明者は、ツリー型データ構造のトポロジーがアークリストによって 記述可能であることに着目した。アークリストとは、ノード間の親子関係を表すアーク のリストである。図 3A〜Cは、アークリストを用いたツリー型データ構造の表現形式の 一例の説明図である。図 3A〜Cの例では、 0、 10、 20、 30、 40、 50、 60、 70、 80、 90、 100及び 110のノード識別子(ID)が付与された 12個のノードからなるツリー型 データ構造が示されている。図 3Aはツリー型データ構造の全体を示している。図 3A において、(ノードのタイプを表している)丸形、ハート形などの図形の中央に記載さ れた数字は、ノード IDを表し、矢印と矢印の側に記載されたく 0, 10 >などの数字の 対は、アークを表している。尚、ノード IDは、文字列には限られず、数値、特に、整数 でもよい。図 3Bは、親ノード(From— ID)から子ノード (To— ID)へのアークリストを 示し、図 3Cは、ノード IDとノード Typeの対のリストからなるノードリストを示す。尚、ッリ 一型データ構造を表現するだけの目的のためにはノードリストが無くても構わない。 原理的には、このようなアークリストを用いることによって、ノード間の関係をポインタに よらずに直接的に記述することが可能である。
[0042] [「子→親」関係に基づく表現]
図 3A〜Cの例では、アークリストは、親ノードに子ノードを対応付ける「親→子」関 係に基づいて記述されている。そのため、一つの親ノード、例えば、ルート'ノード 0に は、 3個の子ノード 10、 60及び 80が存在するため、アークリストの From— IDには、 同じノード IDの 0が 3回出現している。つまり、親ノードを特定しても子ノードを特定す ることができないので、アークリストは、要素 From— IDの配列と要素 To— IDの配列 により構成される。アークリストを使用する場合、あるノードは、 From— IDの配列と、 To— IDの配列の両方の配列に出現する。
[0043] これに対して、親子関係は、「子→親」関係によっても表現することが可能である。こ の場合、ノード間の親子関係は、ルート'ノード以外のノードである非ルート'ノードの 各々と、関連付けられた親ノードと、の組の配列によって表現される。この「子→親」 関係によって親子関係を表現する場合、「親→子」関係の場合には得られな力つた 重要な性質がある。即ち、一つの子ノードには必ず唯一の親ノードが対応するので、 子ノードを特定することによって、この子ノードに対応する唯一の親ノードを直ちに特 定することができる。つまり、アークリストは、実際には、要素 To— IDの配列だけを準 備すればよい。この結果として、アークリストを格納するための記憶容量が削減される 。この記憶容量の削減は、メモリへのアクセス回数が低減するという効果があるので、 結果的に、処理の高速ィ匕が実現できる。
[0044] 図 4A〜Cは、本発明の一実施例による「子→親」関係に基づくツリー型データ構造 の表現方法の説明図である。図 4Aはツリー全体の説明図であり、図 4Bは「子→親」 関係に基づくアークリストである。図 4Bのアークリストは、ルート'ノードに対する親ノ ードの格納領域を含んでいるので、ルート'ノードの親ノードとして、便宜的に〃—〃が 設定されている。但し、ルート'ノードに対応する親ノードは存在しないので、図 4Cに 示されるように、「子→親」関係に基づくアークリストからルート'ノードに対する親ノー ドの格納領域を除いても構わない。このように本発明の一実施例では、ルート'ノード 以外のノードである非ルート'ノードの各々に対して、非ルート'ノードの親ノードを関 連付けることによりノード間の親子関係を表現する。そして、「子→親」表現された子 のノード力 親のノードのリストを迪ることでツリーのトポロジーを表現することができる
[0045] このような「子→親」関係に基づくツリー型データ構造は、本発明の一実施例によれ ば、図 5に示されるように、図 1に示されたコンピュータシステム 10に、ルート'ノードを 含むノードに固有のノード識別子を付与するノード定義ステップ 501と、前記ルート' ノード以外のノードである非ルート'ノードの各々に付与されたノード識別子に、前記 非ルート'ノードの各々の親ノードに付与されたノード識別子を関連付ける親子関係 定義ステップ 502と、を実行させることによって RAM14上に構築される。このように、 最初に、文字列、浮動小数、整数などの任意の識別情報によってノードにノード識別 子を付与し、次に、「子→親」表現に基づいて親子関係を定義することによって、子ノ ードのノード識別子力 親ノードのノード識別子を引く (ルックアップする)ことでツリー のトポロジーを表現することができる。
[0046] [ノード識別子]
好ま 、一実施例によれば、ノード定義ステップはノード識別子として数値を使用し 、より好ましくは、連続する整数を使用し、更に好ましくは、 0又は 1からの整数連番を 使用する。これにより、ノード識別子から、そのノードに対応する親ノードのノード識別 子が格納されて 、るアドレスを簡単に取得することができるので、子ノードのノード識 別子力 親ノードのノード識別子を引く処理を高速ィ匕することができる。
[0047] ツリー型データ構造のノードにノード識別子として順序付きの番号を付与してノード 間の親子関係を表現する場合、番号の付与順序に規則を定めることによって、その 後のツリー型データ構造の取り扱 、が容易になると 、う利点がある。本発明によれば 、この番号の付与順序の規則として、同じ世代のノードよりも子ノードを優先する深さ 優先モードと、子ノードよりも同じ世代のノードを優先する幅優先モードが利用される [0048] 図 6A〜Cは、本発明の一実施例により ID形式のツリー構造型データを整数連番 形式のツリー構造型データへ変換する処理の説明図である。図 6Aには、各ノードに I D番号が付与されたツリー構造型データが示され、図 6Bには、変換規則が示され、 図 6Cには、各ノードに整数連番が付与されたツリー構造型データが示されている。 本例の変換規則は、深さ優先で連続番号を付与する規則であり、具体的には、複数 の子ノードが存在する場合、長子 (一番上の兄)ノードに最小番号を付与し、末子 (一 番下の弟)ノードに大きい番号を付与し、かつ、兄弟ノードよりも子ノードを優先して 番号を付与する。本例では、昇順に番号付けをしているが、降順に番号付けをしても よい。
[0049] また、図 7A〜Cは、本発明の他の一実施例により ID形式のツリー構造型データを 整数連番形式のツリー構造型データへ変換する処理の説明図である。図 7Aには、 各ノードに ID番号が付与されたツリー構造型データが示され、図 7Bには、変換規則 が示され、図 7Cには、各ノードに整数連番が付与されたツリー構造型データが示さ れている。本例の変換規則は、幅優先で連続番号を付与する規則であり、具体的に は、複数の子ノードが存在する場合、長子(一番上の兄)ノードに最小番号を付与し 、末子(一番下の弟)ノードに大きい番号を付与し、かつ、子ノードよりも兄弟ノードを 優先して番号を付与する。本例では、昇順に番号付けをしているが、降順に番号付 けをしてもよい。
[0050] このようにノード識別子として番号を使用すると、ノード番号から直ちに、即ち、 0 (1 )のオーダーで、そのノードに関する格納値が格納されているアドレスを引くことがで きる。また、親子関係を「子→親」表現することによって、子ノードから親ノードを直ち に、即ち、 O (l)のオーダーで引くことができる。
[0051] [深さ優先モード]
本発明の一実施例によれば、図 6A〜Cに示されるような深さ優先に基づくツリー型 データ構造は、図 1に示されたコンピュータシステム 10に、
同じ世代のノードよりも子ノードを優先して、ルート'ノードを含むノードに固有の連 続する整数を付与するノード定義ステップと、 ルート ·ノード以外のノードである非ルート ·ノードの各々に付与された整数の順に、 非ルート'ノードの各々の親ノードに付与された整数を並べることにより形成される配 列を前記記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは深さ優先 で連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表現さ れる。
[0052] 図 8は、本発明の一実施例による深さ優先に基づくノード定義処理のフローチヤ一 トである。このノード定義処理は、コンピュータシステム 10に
最初にルート'ノードに番号を付与するステップ 801と、
既に番号が付与されたあるノードに唯一の子ノードが存在する場合には、当該子ノ ードに当該あるノードに付与された前記番号の次の番号を付与するステップ 802と、 既に番号が付与されたあるノードに複数の子ノードが存在する場合には、当該複数 の子ノードの間の兄弟関係に従って、弟ノードは直上の兄ノードの全ての子孫ノード に番号が付与された後に次の番号が付与されるように、一番上の兄ノードから一番 下の弟ノードまで番号を付与するステップ 803と、
を実行させる。これにより、深さ優先モードで同一の親ノードから派生した複数の子ノ ードの間に兄弟関係が定義される。
[0053] 図 9は、本発明の一実施例により図 6A〜Cに示された深さ優先のツリー型データ 構造から作成された「子→親」表現に基づく親子関係の配列の説明図である。同図 にサブツリー 1又はサブツリー 2として示されているように、深さ優先で連続番号が付 与されたノードの親子関係を「子→親」関係に基づいて配列表現すると、あるノードの 子孫ノードが連続領域に出現するという優れた性質が得られる。
[0054] 本発明の一実施例では、深さ優先モードの優れた性質を利用することにより、前記 配列から、あるノードに付与された整数以上の値が格納されて!ヽる連続領域を抽出 することにより、前記あるノードの全ての子孫ノードを特定する。これにより、あるノード の子孫ノードを表すノード群が前記配列内の連続ブロックとして獲得できる。例えば、 連続ブロックのサイズを mとすると、あるノードの全ての子孫ノードを特定するための 処理速度は、 O (m)のオーダーになる。 [0055] 既に説明したように、ノード間の親子関係は、「子→親」関係の配列の他に、「親→ 子」関係の配列によっても表現できる。図 10は、図 6A〜Cに示された深さ優先のッリ 一型データ構造力 作成された「親→子」表現に基づく親子関係の配列の説明図で ある。一つの親ノードに対して複数の子ノードが存在し得るので、親子関係の配列は 、各ノードに対する子ノードの番号が格納されて 、る領域を示すための配列 Aggrと、 子ノードの番号が格納されている配列 P→Cの二つの配列により構成される。例えば 、配列 Aggrの先頭から 2番目の要素 Aggr [1]の値は" 3"であり、これは、ノード [1] に対する子ノードの番号は、配列 P→Cの要素 P→C [3]以降に格納されて!、ることを 表している。これにより、ノード [0]、即ち、ルート'ノードに対する子ノードは、配列 P →Cの先頭から 3個の要素、 P→C[0]の 1、 P→C[1]の 6、及び P→C[2]の 8である ことがわ力ゝる。
[0056] この「親→子」表現に基づく親子関係の配列の求め方を説明する。
(1)ノードの番号が配列 P→Cの最大の添字( = 11)と一致する場合、このノードに属 する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号力も Aggr値を求める。この Aggr値は、配 列 P→Cの開始点を表す。
(3)太字で表された親ノード番号 + 1に対応する Aggr値を求める。この Aggr値 1 が配列 P→Cの終了点である。
[0057] 例えば、ノード 0の子ノードの開始点は、 Aggr [0]、即ち、 0であり、終了点は、 Agg r[l]— 1、即ち、 3— 1 = 2である。したがって、ノード 0の子ノードは、配列 P→Cの 0 〜2番目の要素、即ち、 1、 6及び 8である。
[0058] 或いは、「親→子」表現に基づく親子関係は、より単純に、親ノード番号の配列と、 対応する子ノード番号の配列と、の二つの配列により表現することも可能である。しか し、この配列を利用して親子関係を見つけるためには、親ノードの番号を検索しなけ ればならないので、即ち、 log (n)のアクセス時間を要するので効率が悪い。
[0059] [幅優先モード]
本発明の一実施例によれば、図 7A〜Cに示されるような幅優先に基づくツリー型 データ構造は、図 1に示されたコンピュータシステム 10に、 子ノードよりも同じ世代のノードを優先して、ルート'ノードを含むノードに固有の連 続する整数を付与するノード定義ステップと、
前記ルート'ノード以外のノードである非ルート'ノードの各々に付与された整数の 順に、前記非ルート'ノードの各々の親ノードに付与された整数を並べることにより形 成される配列を前記記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは幅優先モ ードで連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表 現される。
[0060] 図 11は、本発明の一実施例による幅優先に基づくノード定義処理のフローチャート である。このノード定義処理は、コンピュータシステム 10に、
各ノードが前記ルート'ノードから何世代目のノードである力 及び、各世代に含ま れるノード数を算出するステップ 1101と、
最初に前記ルート ·ノードに番号を付与するステップ 1102と、
ある世代に含まれる全てのノードに番号が付与されたならば、当該ある世代の次の 世代にノードが存在しなくなるまで、当該次の世代に含まれる全てのノードに対して、 親ノードが異なる場合には、当該親ノードに番号が付与された順番に当該ノードに番 号を付与し、当該親ノードが同一である場合には、当該親ノードから派生した複数の 子ノードの間に兄弟関係を定義し、一番上の兄ノードから一番下の弟ノードまで直前 に付与された番号の次の番号から連続的に変化する固有の整数を順に付与するス テツプ 1013と、
を実行させる。これにより、幅優先モードで同一の親ノードから派生した複数の子ノー ドの間に兄弟関係が定義される。
[0061] 図 12は、本発明の一実施例により図 7A〜Cに示された幅優先のツリー型データ構 造から作成された「子→親」表現に基づく親子関係の配列の説明図である。同図に 示されて!/ヽるように、幅優先で連続番号が付与されたノードの親子関係を「子→親」 関係に基づいて配列表現すると、あるノードの子ノードは連続領域に出現するという 優れた性質が得られる。これは、幅優先モードで連続番号が付与されたノードの親子 関係を「子→親」関係に基づいて配列表現すると、親ノードに付与された番号が前記 配列中に順序付き (昇順又は降順)で出現することによる。
[0062] したがって、本発明の一実施例では、幅優先モードの優れた性質を利用することに より、前記配列から、あるノードに付与された整数と同じ値が格納されている連続領域 を抽出することにより、前記あるノードの全ての子ノードを特定する。これにより、あるノ 一ドの子ノードを、例えば、二分探索などの手法を用いて検索することが可能であり、 即ち、 O (log (n) )のオーダーで検索することが可能になる。
[0063] 既に説明したように、ノード間の親子関係は、「子→親」関係の配列の他に、「親→ 子」関係の配列によっても表現できる。図 13は、図 7A〜Cに示された幅優先のツリー 型データ構造力 作成された「親→子」表現に基づく親子関係の配列の説明図であ る。図 13—つの親ノードに対して複数の子ノードが存在し得るので、親子関係の配 列は、各ノードに対する子ノードの番号が格納されて 、る領域を示すための配列 Ag grと、子ノードの番号が格納されている配列 P→Cの二つの配列により構成される。例 えば、配列 Aggrの先頭から 2番目の要素 Aggr [1]の値は" 3"であり、これは、ノード [1]に対する子ノードの番号は、配列 P→Cの要素 P→C[3]以降に格納されているこ とを表している。これにより、ノード [0]、即ち、ルート'ノードに対する子ノードは、配列 P→Cの先頭から 3個の要素、 P→C[0]の 1、 P→C[1]の 2、及び、 P→C[2]の 3で あることがわ力る。
[0064] この「親→子」表現に基づく親子関係の配列の求め方を説明する。
(1)ノードの番号が配列 P→Cの最大の添字( = 11)と一致する場合、このノードに属 する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号力も Aggr値を求める。この Aggr値は、配 列 P→Cの開始点を表す。
(3)太字で表された親ノード番号 + 1に対応する Aggr値を求める。この Aggr値 1 が配列 P→Cの終了点である。
[0065] 例えば、ノード 0の子ノードの開始点は、 Aggr [0]、即ち、 0であり、終了点は、 Agg r[l]— 1、即ち、 3— 1 = 2である。したがって、ノード 0の子ノードは、配列 P→Cの 0 〜2番目の要素、即ち、 1、 2及び 3である。
[0066] [ツリー型データ構造の表現形式の相互変換] 上述のように、ノードに連続番号を付与するための深さ優先モード及び幅優先モー ドは、それぞれ、固有の優れた性質を備えている。本発明の一実施例によるコンビュ ータシステムは、深さ優先に基づく「子→親」表現形式と、幅優先に基づく「子→親」 表現形式と、「親→子」表現形式と、の間で相互に表現形式を変換することができる。 図 14は、本発明の一実施例による三つの表現形式の相互変換の関係を示す図であ る。
[0067] 図 15は、本発明の一実施例によりコンピュータシステムによって実現されるツリー型 データ構造の構築方法のフローチャートである。同図に示されるように、コンピュータ システム 10は、ルート'ノード力 始めて全てのノードに連続的に変化する整数を一 意に割り当てるステップ 1510と、ノード間に親子関係を定義するステップ 1520と、を 実行することにより、ツリー型データ構造を記憶装置上に構築する。
[0068] 好ましくは、前記全てのノードに整数を一意に割り当てるステップ 1510は、
同じ世代のノードよりも子ノードを優先して番号を付与する深さ優先モードと、子ノ ードよりも同じ世代のノードを優先して番号を付与する幅優先モードのどちらのモード でノードに番号を付与するかを選択するステップ 1511と、
前記深さ優先モードが選択された場合に、深さ優先でノードを検索し、検索された 順にノードに番号を付与するステップ 1512と、
前記幅優先モードが選択された場合に、幅優先でノードを検索し、検索された順に ノードに番号を付与するステップ 1513と、
を含む。これにより、深さ優先モードによるノード番号付与と幅優先モードによるノード 番号付与を一つのシステムに併存させることができるので、状況に応じて適切な表現 形式を利用することが可能である。
[0069] また、好ましくは、前記ノード間に親子関係を定義するステップ 1520は、
子ノードから親ノードへの関係を定義する子親表現モードと、親ノードから子ノード への関係を定義する親子表現モードのどちらのモードで親子関係を定義するかを選 択するステップ 1521と、
前記子親表現モードが選択された場合に、子ノードに付与された番号の順に、当 該子ノードに対応する親ノードに付与された番号を前記記憶装置に格納するステツ プ 1522と、
前記親子表現モードが選択された場合に、親ノードに付与された番号の順に、当 該親ノードに対応する子ノードに付与された番号の配列を前記記憶装置に格納する ステップ 1523と、
を含む。これにより、「子→親」関係で表現されているノード間の親子関係を、状況に 応じて、「親→子」関係で表現することが可能になる。「親→子」関係に基づく表現は 、例えば、外部との情報交換の際に有利である。
[0070] このように、本発明の一実施例によれば、ツリー型データ構造の表現形式として、親 子関係を表現するための「子→親」表現及び「親→子」表現、並びに、ノードに番号を 付与するため深さ優先モード及び幅優先モードを選択的に利用可能である。以下で は、異なる表現形式の相互変換の方法を簡単に説明する。
[0071] [深さ優先「子→親」表現から幅優先「子→親」表現への変換]
図 16A、 Bは、本発明の一実施例による、深さ優先「子→親」表現(図 16A)から、 幅優先「子→親」表現(図 16B)への変換の説明図である。図 17は、この本発明の一 実施例による深さ優先「子→親」表現から幅優先「子→親」表現への変換方法のフロ 一チャートである。親子関係は、子ノードに付与された番号の順に、当該子ノードに 対応する親ノードに付与された番号をコンピュータシステム 10の記憶装置、例えば、 RAM14に格納することにより定義されている。図 17に示されるように、コンピュータ システム 10は、
同じ世代のノードよりも子ノードを優先してノードに番号を付与する深さ優先モード で表現されたツリー型データ構造の各ノードの世代を判定し、世代毎に属しているノ ードの個数を計数するステップ 1701と、
前記世代毎に属しているノードの個数に基づいて、子ノードよりも同じ世代のノード を優先してノードに番号を付与する幅優先モードで番号を付与する際に各世代にお いて付与される番号を決定するステップ 1702と、
前記判定されたノードの世代及び前記決定された各世代において付与される番号 に基づ!/ヽて、前記各ノードの番号を前記幅優先モードで付与される番号に変換する 変換配列を作成するステップ 1703と、 前記各ノードの前記親子関係を、前記変換配列を使用して前記幅優先モードで付 与される番号で表現された親子関係に変換するステップ 1704と、
を実行する。これにより、深さ優先モードに基づく「子→親」表現形式から幅優先モー ドに基づく「子→親」表現形式への変換が可能になる。
[0072] 以上の処理により、図 16A、 Bに示されるような深さ優先「子→親」表現から幅優先「 子→親」表現への変換が行われる。
[0073] [幅優先「子→親」表現から深さ優先「子→親」表現への高速変換]
図 18A、 Bは、本発明の一実施例による、幅優先「子→親」表現(図 18A)から、深 さ優先「子→親」表現(図 18B)への変換の説明図である。図 19は、この本発明の一 実施例による幅優先「子→親」表現から深さ優先「子→親」表現への変換方法のフロ 一チャートである。親子関係は、子ノードに付与された番号の順に、当該子ノードに 対応する親ノードに付与された番号をコンピュータシステム 10の記憶装置、例えば、 RAM14に格納することにより定義されている。図 19に示されるように、コンピュータ システム 10は、
子ノードよりも同じ世代のノードを優先してノードに番号を付与する幅優先モードで 表現されたツリー型データ構造の各ノードの子孫の数を計数するステップ 1901と、 親ノードに付与されるべき番号に、当該ノードと同一の親ノードから派生した兄弟ノ ードのうち当該ノードよりも前に番号が付与されている兄ノードの数及び当該兄ノード の子孫の数を加算することにより、前記幅優先モードで付与された番号を、同じ世代 のノードよりも子ノードを優先してノードの番号を付与する深さ優先モードで付与され る番号に変換する変換配列を作成するステップ 1902と、
前記各ノードの前記親子関係を、前記変換配列を使用して前記深さ優先モードで 付与される番号で表現された親子関係に変換するステップ 1903と、
を実行する。これにより、図 18A、 Bに示されるような幅優先モードに基づく「子→親」 表現形式から深さ優先モードに基づく「子→親」表現形式への高速変換が可能にな る。
[0074] [幅優先「子→親」表現から深さ優先「子→親」表現への変換]
本発明の他の一実施例によれば、幅優先「子→親」表現から深さ優先「子→親」表 現への変換は、図 19に関して説明した高速変換方法の他に、検索を利用した変換 方法によっても実現できる。以下では、この検索を利用した変換方法を説明する。
[0075] 幅優先「子→親」表現による親子関係は、子ノードに付与された番号の順に、当該 子ノードに対応する親ノードに付与された番号をコンピュータシステム 10の記憶装置 、例えば、 RAM14に格納することにより定義されている。コンピュータシステム 10は 子ノードよりも同じ世代のノードを優先してノードに番号を付与する幅優先モードで 表現されたツリー型データ構造の各ノードを深さ優先で検索し、前記幅優先モードで 付与された番号を、同じ世代のノードよりも子ノードを優先してノードの番号を付与す る深さ優先モードで付与される番号に変換する変換配列を作成するステップと、 前記各ノードの前記親子関係を、前記変換配列を使用して前記深さ優先モードで 付与される番号で表現された親子関係に変換するステップと、
を実行する。
[0076] この検索に基づく変換方法によって作成された変換配列は、先の高速変換方法の 例で作成される変換配列と同じである。
[0077] [「子→親」表現から「親→子」表現への変換]
次に、本発明の一実施例による子ノードに親ノードを対応付ける「子→親」関係から 親ノードに子ノードを対応付ける「親→子」関係への変換方法を説明する。
[0078] 図 20は、本発明の一実施例による「子→親」表現から「親→子」表現への変換方法 のフローチャートである。親子関係は、子ノードに付与された番号の順に、当該子ノ ードに対応する親ノードに付与された番号を第 1の配列の要素としてコンピュータシ ステム 10の記憶装置、例えば、 RAM14に格納することにより定義されている。コンビ ユータシステム 10は、
各ノードに関して、当該ノードに付与された番号が前記第 1の配列の要素として出 現する回数を計数するステップ 2001と、
前記各ノードに関して当該ノードに対応する子ノードに付与された番号を格納する ため、前記計数された回数に応じた個数の連続領域を前記記憶領域に第 2の配列と して確保するステップ 2002と、 前記第 1の配列の要素を順次に読み出し、当該要素と値が一致する番号が付与さ れたノードのために確保された前記第 2の配列の要素として、前記第 1の配列の要素 に対する子ノードの番号を順次に格納するステップ 2003と、
を実行する。これにより、親子関係は、「子→親」表現形式から「親→子」表現形式に 変換される。即ち、変換後の親子関係は、親ノードに付与された番号の順に、当該親 ノードに対応する子ノードに付与された番号を前記第 2の配列の要素として前記記憶 装置に格納することにより定義される。
[0079] この変換方法では、深さ優先又は幅優先の性質はそのまま保存されるので、深さ優 先モードに基づく「子→親」表現は、深さ優先モードに基づく「親→子」表現に変換さ れ、幅優先モードに基づく「子→親」表現は、幅優先モードに基づく「親→子」表現に 変換される。
[0080] [「親→子」表現から「子→親」表現への変換]
次に、本発明の一実施例による親ノードに子ノードを対応付ける「親→子」関係から 子ノードに親ノードを対応付ける「子→親」関係への変換方法を説明する。
[0081] 図 21は、本発明の一実施例による幅優先「子→親」表現から深さ優先「子→親」表 現への変換方法のフローチャートである。親子関係は、親ノードに付与された番号の 順に、当該親ノードに対応する子ノードに付与された番号を第 1の配列の要素として コンピュータシステム 10の記憶装置、例えば、 RAM14に格納することにより定義さ れている。コンピュータシステム 10は、
子ノードに付与された番号の順に、当該子ノードに対応する親ノードに付与された 番号を格納するため、前記記憶装置に第 2の配列を確保するステップ 2101と、 前記第 1の配列の要素を順次に読み出し、当該要素と値が一致する番号が付与さ れたノードのために確保された前記第 2の配列の要素として、前記第 1の配列の要素 に対する親ノードの番号を順次に格納するステップ 2102と、
を実行する。これにより、親子関係は、「親→子」表現形式から「子→親」表現形式に 変換される。即ち、変換後の親子関係は、子ノードに付与された番号の順に、当該子 ノードに対応する親ノードに付与された番号を前記第 2の配列の要素として前記記憶 装置に格納することにより定義される。 [0082] この変換方法では、深さ優先又は幅優先の性質はそのまま保存されるので、深さ優 先モードに基づく「親→子」表現は、深さ優先モードに基づく「子→親」表現に変換さ れ、幅優先モードに基づく「親→子」表現は、幅優先モードに基づく「子→親」表現に 変換される。
[0083] [ノード挿入]
次に、ツリー型データ構造のトポロジーを編集する操作である「ノード挿入」につい て説明する。本発明の「ノード挿入」は、ツリー型データ構造をもつマスタ側データの ある特定ノード(=マスタ側特定ノード)の子孫ノードとして、ツリー型データ構造をも つスレイブ側データのある特定ノード(=スレイブ側特定ノード)の子孫ノードを追カロ することを意味する。
[0084] 図 22A〜Cは、本発明の一実施例によるツリー型データ構造におけるノード挿入の 説明図である。図 22Aは、深さ優先でノードに番号が付与された深さ優先モードのマ スタ側データを示し、図 22Bは、深さ優先モードのスレイブ側データを示し、図 22C は、スレイブ側データの一部のノードをマスタ側データに挿入した結果を深さ優先モ ードで表現している。より詳細には、マスタ側データのノード 5の子孫ノードとして、ス レイブ側データのノード 1の子孫ノード(ノード 2、ノード 3及びノード 4)が挿入され、マ スタ側データのノード 9の子孫として、スレイブ側データのノード 5の子孫ノード(ノード 6及びノード 7)が挿入され、全てのノードには深さ優先で番号が再付与されている。 マスタ側データのノード 5に子孫ノードが挿入され、挿入された子孫ノードにノード 6、 ノード 7及びノード 8の番号が付与されるので、マスタ側データのノード 6の番号は、ノ ード 9に付け直される。同様に、マスタ側データのノード 6、ノード 7、ノード 8及びノー ド 9は、それぞれ、ノード 9、ノード 10、ノード 11及びノード 12のように番号が再付与さ れる。さらに、マスタ側データの現在のノード 12 (番号再付与前のノード 9)には、スレ イブ側データのノード 6及びノード 7が挿入され、それぞれ、ノード 13及びノード 14と して番号が再付与される。これにより、元のマスタ側データのノード 10及びノード 11 は、それぞれ、ノード 15及びノード 16のように番号が再付与される。
[0085] 同図の例では、スレイブ側データのノード 5の子ノード 6及び子ノード 7は、マスタ側 データのノード 9の子ノード 10及び子ノード 11よりも前に挿入されている力 子ノード 10と子ノード 11の間に挿入するように構成することが可能であり、或いは、子ノード 1 0及び子ノード 11の後に挿入するように構成することも可能である。
[0086] 図 23は、本発明の一実施例によるノード挿入方法のフローチャートである。この方 法は、ツリー型データ構造をもつマスタ側データに、ツリー型データ構造をもつスレイ ブ側データのノードを挿入する。
[0087] マスタ側データ及びスレイブ側データのそれぞれにお!/、て、ルート ·ノードを含むノ ードに固有のノード識別子が付与されている。ルート'ノード以外のノードである非ル ート 'ノードの各々に付与されたノード識別子には、非ルート'ノードの各々の親ノード に付与されたノード識別子が関連付けられ、これにより、ノード間の親子関係が表現 されている。
[0088] 本実施例のノード挿入方法は、
スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステップ 2301 と、
スレイブ側データ中のスレイブ側特定ノードに対応したマスタ側データ中の別の特 定ノードの子孫ノードとして、スレイブ側データ中のスレイブ側特定ノードの子孫ノー ドをマスタ側データに挿入するステップ 2302と、
を含む。
[0089] このように本発明の一実施例によるノード挿入方法は、「子→親」表現のツリー型デ ータ構造を採用して、スレイブ側データのスレイブ側特定ノードの子孫ノードを、マス タ側データのマスタ側特定ノードの子孫ノードとして、マスタ側データに挿入する。
[0090] 本発明の好ま 、一実施例によれば、上記ノード間の親子関係は、深さ優先モード に基づく「子→親」表現形式で表され、ノード識別子は、連続する整数である。このと き、例えば、図 22A〜Cに示されたツリー型データ構造は、図 24A〜Cに示されるよ うな深さ優先モードに基づく「子→親」表現形式で記述することができる。図 24A、 B 及び Cは、それぞれ、図 22A、 B及び Cのデータ構造に対応した深さ優先モードに基 づく「子→親」表現形式の説明図である。
[0091] 図 24A〜Cに示されるように、マスタ側データ及びスレイブ側データのノードに付与 された固有のノード識別子は、同じ世代のノードよりも子ノードを優先して付与された 連続する整数である。また、マスタ側データ及びスレイブ側データのそれぞれにおい て、ノード間の親子関係は、非ルート'ノードの各々に付与されたノード識別子の順に 関連付けられた、非ルート'ノードの各々の親ノードに付与されたノード識別子力 な る配列によって表現されている。即ち、ノード間の親子関係は、深さ優先モードに基 づく「子→親」表現形式で表されて 、る。
[0092] このとき、スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステツ プ 2301は、スレイブ側データの親子関係を表現する配列中のスレイブ側特定ノード に付与されたノード識別子が格納されて 、る位置の次の位置から、スレイブ側特定ノ ードに付与されたノード識別子の値以上の値が格納されている連続領域を抽出する ことにより、スレイブ側特定ノードの全ての子孫ノードを特定する。この子孫ノードの特 定は、図 9を参照して説明したように、深さ優先で連続番号が付与されたノードの親 子関係を「子→親」関係に基づいて配列表現すると、あるノードの子孫ノードが連続 領域に出現すると 、う、深さ優先モードの優れた性質に基づ 、て 、る。
[0093] また、図 24Cに示されるように、スレイブ側特定ノードの子孫ノードをマスタ側データ に挿入するステップ 2302は、マスタ側データ中のノードとスレイブ側データ中のスレ イブ側特定ノードの子孫ノードに、スレイブ側特定ノードの子孫ノードがマスタ側デー タ中のマスタ側特定ノードの子孫ノードに挿入される順序で、同じ世代のノードよりも 子ノードを優先してノード識別子を付与し、当該ノード識別子の順に対応する親ノー ドのノード識別子を関連付けることにより、マスタ側データのノード間の親子関係を表 現する配列にスレイブ側データ中のスレイブ側ノードの子孫ノードの親子関係を表現 する配列が挿入された新たな親子関係を表現する配列を生成するステップを含む。
[0094] このように、本発明の好ましい一実施例によれば、親子関係は深さ優先であること、 ならびに、ノード識別子は連続する整数であること、を利用して、スレイブ側データ中 の子孫ノードを連続領域によって判定し、マスタ側データとスレイブ側データ中の子 孫ノードについて新たな親子関係を表現する配列を生成する。
[0095] さらに、上記の新たな親子関係を表現する配列を生成するステップは、子孫ノード の揷入点までの処理と、子孫ノードの挿入点における処理と、子孫ノードの挿入点の 後の処理の 3ステップで実現することができる。図 25は、本発明の一実施例による新 たな親子関係を表現する配列を生成する処理のフローチャートである。
[0096] 図 25に示されるように、新たな親子関係を表現する配列を生成するステップは、子 孫ノード挿入点までの処理ステップ 2501と、子孫ノードの挿入点における処理ステツ プ 2502と、子孫ノードの挿入点後の処理ステップ 2503と、を含む。
[0097] ステップ 2501:マスタ側データのノードにっ 、て、マスタ側特定ノードが現れるまで 、同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当 該ノード識別子に当該ノードの親ノードのノード識別子を関連付ける。
[0098] ステップ 2502:マスタ側特定ノードにノード識別子を付与し、続、て、マスタ側特定 ノードの子孫ノードとして、スレイブ側特定のノードの子孫ノードに、同じ世代のノード よりも子ノードを優先してノード識別子を付与し、当該子孫ノードのそれぞれにその親 ノードのノード識別子を関連付ける。
[0099] ステップ 2503:マスタ側データに未だノード識別子が付与されて ヽな 、残りのノー ドが存在する場合、当該残りのノードについて、同じ世代のノードよりも子ノードを優 先してノード識別子を付与し、当該残りのノードの当該ノード識別子に親ノードのノー ド識別子を関連付ける。
[0100] また、図 24A〜Cに示された例のように、スレイブ側特定ノード 1及びスレイブ側特 定ノード 2の二つ以上のノードの子孫ノードを同時にマスタ側データに挿入する場合 には、スレイブ側特定ノードに対応したマスタ側特定ノードが無くなるまで、上記のス テツプ 2501とステップ 2502を繰り返し実行した後、ステップ 2503を実行すればよい
[0101] [ノードの実体的な値の取り扱い方]
以上の説明のように、ツリー型データ構造のトポロジーを操作するノード挿入は、ノ ードに付与されたノード識別子 (例えば、ノード番号)を付け直す操作であることがわ かる。一方、ノードには、そのノードの実体的な値として、そのノードのタイプを表すノ ードタイプと、値を表すノード値と、が関連付けられている。これらのノードタイプ及び ノード値は、図 2A、 Bに関して説明したように、ノードタイプ及びノード値を記述する 情報が格納されたノード情報格納領域へのポインタを、ノード識別子に随伴させるこ とによって特定することができる。 [0102] 図 26には、本発明の一実施例によるノード挿入処理におけるノードの実体的な値 の取り扱い方の一例が示されている。例えば、図 24A〜Cに示された例では、スレイ ブ側のノード 2は、マスタ側のノード 5の子孫ノードとして挿入することにより、揷入処 理後のノード 6になる。一方、スレイブ側のノード 2の実体的な値は、図 26に示される ように、アドレス aaaaのノード情報格納領域に格納されている。このスレイブ側のノー ド 2をマスタ側データに挿入するとき、挿入によって生成されたノード 6のポインタに、 アドレス aaaaをコピーする。これにより、挿入後のノードに、対応したノード情報格納 領域を指定するポインタを随伴させることができる。
[0103] [ノード挿入処理の例]
次に、図 22A〜Cに示した例を用いて、本発明の一実施例によるノード挿入処理を さらに詳しく説明する。図 27は、本発明の一実施例によるノード挿入処理の全体的な 説明図である。本例では、マスタ側のノード 5 (マスタ側特定ノード 1)の子孫ノードとし て、スレイブ側のノード 1 (スレイブ側特定ノード 1)の子孫ノード(ノード 2、ノード 3及び ノード 4)を挿入し、マスタ側のノード 9 (マスタ側特定ノード 2)の子孫ノードとして、スレ イブ側のノード 5 (スレイブ側特定ノード 2)の子孫ノード (ノード 6及びノード 7)を挿入 する。
[0104] ノード挿入処理に使用されるスレイブ側特定ノードとマスタ側特定ノードは、マッチ ングしているノードである。以下の例では、スレイブ側特定ノードのノードタイプ及びノ ード値がマスタ側特定ノードのノードタイプ及びノード値と、それぞれ、一致している 場合に、スレイブ側特定ノードとマスタ側特定ノードはマッチングしている、と判定する 。図 27の例では、スレイブ側のノード 1とマスタ側のノード 5は、共にハート形で描か れていて、ノードタイプが一致している。また、図示されていないが、ノードの保持する ノード値も一致している。同様に、スレイブ側のノード 5とマスタ側のノード 3は、同じノ ードタイプを有し、保持するノード値も一致している。これらのスレイブ側特定ノード及 びマスタ側特定ノードは、予めユーザが指定してもよぐ或いは、ユーザが設定した 条件に従って自動的に判定してもよい。
[0105] 図 27には、マスタ側、スレイブ側及びノード挿入操作後のそれぞれにつ 、て、ッリ 一型データ構造と、深さ優先モードに基づく「子→親」表現形式の親子関を表す配列 と、が示されている。また、ノード挿入処理後のツリー型データ構造及び親子関係を 表す配列では、ノード識別子であるノード番号の変化する様子も示されて 、る。
[0106] 本発明の一実施例によるノード挿入処理は、マスタ側のノードとスレイブ側のノード のマッチングを行って、ノード挿入処理の対象となるノード、即ち、特定ノード及び別 の特定ノードを決定した後、ノードリスト、即ち、深さ優先モードに基づく「子→親」表 現形式の親子関を表す配列を合成する。
[0107] 以下、図 28A乃至図 35を参照してノードリスト合成処理を説明する。ノードリスト合 成処理は、子孫ノードを特定する処理と、最初の挿入点までの処理と、挿入処理と、 次の挿入点までの処理と、 2回目の挿入処理と、挿入点以降の処理と、を含む。
[0108] 図 28A〜Fは、本発明の一実施例による子孫ノードを特定する処理の説明図であ る。ノード挿入処理を行うためには、上述のように、各スレイブ側特定ノードの子孫ノ ード (即ち、サブツリー)の範囲を特定する必要がある。深さ優先モードに基づく「子 →親」表現形式では、特定ノード、即ち、頂点ノードに対する子孫ノードは、頂点ノー ド以降の連続した範囲に存在している。そこで、子孫ノードを特定する処理では、こ の頂点ノード以降の連続した範囲を見つける。図 28A〜Fにおいて、太線の矢印は 、スレイブ側特定ノード 1及びマスタ側特定ノード 1につ 、ての処理を説明するための 矢印であり、白抜きの矢印は、スレイブ側特定ノード 2及びマスタ側特定ノード 2につ いての処理を説明するための矢印である。
[0109] 手順 1では、頂点ノード(=スレイブ側特定ノード 1)であるノード 1の次のノード 2から チェックを開始する。 {2}の内容(=ノード 2に関連付けられた親ノード番号)をチエツ クすると 1であり、頂点ノード 1以上の値であるので、ノード 2は頂点ノード [1]に属する ことがわ力ゝる。
[0110] 手順 2では、 {3}の内容をチェックすると 2であり、頂点ノード 1以上の値であるので、 ノード 3は頂点ノード [1]に属することがわかる。
[0111] 手順 3では、 {4}の内容をチェックすると 1であり、頂点ノード 1以上の値であるので、 ノード 4は頂点ノード [1]に属することがわかる。
[0112] 手順 4では、 }の内容をチェックすると 0であり、頂点ノード 1よりも小さい値である ので、ノード 5 (及びそれ以降のノード)は頂点ノード [1]に属さないことがわかる。 [0113] 頂点ノード 1に対するチェックはここで終了し、頂点ノード [1]に属するノードのノー ド番号の末尾は {4}であることがわ力る。
[0114] 手順 5及び 6では、同様に、頂点ノード [5]に属するノードをチヱックすると、頂点ノ ード [5]に属するノードのノード番号の末尾は {7}であることがわかる。
[0115] 子孫ノードが特定されると、次に、ノードリストの合成結果配列を生成する。そのため 、最初に、マスタ側のノード番号がどのように変化するかを記録する変換配列と、合 成結果配列を準備する。変換配列のサイズは、元のマスタ側の C→P配列と同じサイ ズであり、合成結果配列のサイズは、元のマスタ側の C→P配列のサイズに、挿入さ れるスレイブ側の子孫ノードの個数(=サブツリーのサイズの合計)を加算することに よって計算できる。図 29は、本発明の一実施例による挿入処理の初期状態の説明 図である。
[0116] 次に、最初の挿入点までの処理が行われる。図 30A〜Cは、本発明の一実施例に よる最初の挿入点までの処理の説明図である。
[0117] 手順 1: (1)マスタ側のノード 0についての処理を行う(図 30A)。変換配列 [0] (変 換配列のアドレス 0)には、(マスタ側の C→P配列のアドレス番号) +nIns = 0 + 0を 格納する。ここで、 nlnsは、スレイブ側力も挿入されたノードの個数を表している。変 換配列に格納される値は、ノード挿入操作によって、マスタ側のノード番号がどのよう に付け直されたかを示している。(2)マスタ側の C→P配列 [0] (C→P配列のアドレス 0)の内容が 1であるので、この値をそのまま合成結果配列 [0] (合成結果配列のァ ドレス 0)に格納する。変換配列挿入ポインタ及び合成結果配列挿入ポインタは、初 期状態では先頭 (即ち、アドレス 0)にセットされ、変換配列及び合成結果配列に値が 格納されると、それぞれ、次のアドレスへ進められる。
[0118] 手順 2 : (1)マスタ側のノード 1についての処理を行う(図 30B)。変換配列 [1]には 、(マスタ側の C→P配列のアドレス番号) + nlns = 1 + 0を格納する。(2)マスタ側の C→P配列 [ 1 ]の内容が 0 (0以上)であるので、この値 0をアドレスとして変換配列を 参照し、変換配列 [0]の内容を、合成結果配列 [1]に格納する。
[0119] 手順 3:手順 2と同様の操作を挿入点、即ち、マスタ側のノード 5まで続ける(図 30C
) o [0120] 図 31は、本発明の一実施例による最初の挿入点における挿入処理の説明図であ る。同図に示された手順 4では、 nlnsの値を、挿入されるノードの個数分、即ち、 3だ け増加させる。次に、スレイブ側の特定ノード 1の 3個の子孫ノードのノード番号(2、 3 及び 4)に、以下の式によって決まるオフセットをカ卩えて、対応する合成結果配列 [6] 、合成結果配列 [7]及び合成結果配列 [8]に順次格納する。ここで、
オフセット = (合成結果配列の挿入ポインタアドレス (本例では、 6)—1)—スレイブ側 挿入開始点アドレス (本例では、 1) =4
である。尚、オフセットの計算時に、合成結果配列の挿入ポインタアドレスは 6に固定 されている。また、スレイブ側挿入開始点アドレスは、スレイブ側特定ノード 1のノード 番号 1である。したがって、合成結果配列 [6] = 1 +4 = 5、合成結果配列 [7] = 2 + 4 = 6、及び、合成結果配列 [7] = 1 +4 = 5のようになる。
[0121] 図 32は、本発明の一実施例による次の挿入点までの処理の説明図である。手順 5 では、次の挿入点まで、手順 2と同様の操作を繰り返す。具体的には、マスタ側のノ ード 6、ノード 7、ノード 8及びノード 9について、変換配列 [i]に(マスタ側の C→P配列 のアドレス番号) +nIns=i+ 3を格納する。ここで、 iはマスタ側のノード番号を表す。 次に、マスタ側の C→P配列 [i]の内容 jをアドレスとして変換配列 [j]を参照し、変換 配列 [j]の内容を、合成結果配列 [変換配列 [i] ]に格納する。例えば、 i= 7のとき、 変換配列 [7]に、 7 + 3 = 10を格納し、次に、 C→P配列 [7]の内容である 6をァドレ スとして、変換配列 [6]を参照し、この変換配列 [6]の内容である 9を、合成結果配列 [変換配列 [7] ] =合成結果配列 [10]に格納する。
[0122] 図 33は、本発明の一実施例による 2回目の挿入点における挿入処理の説明図で ある。同図に示された手順 6では、現在の nlnsの値 3を、挿入されるノードの個数分、 即ち、 2だけ増加させ、 nlns = 5とする。次に、スレイブ側の特定ノード 2の 2個の子孫 ノードのノード番号(6及び 7)に、以下の式によって決まるオフセットをカ卩えて、対応 する合成結果配列 [ 13]及び合成結果配列 [14]に順次格納する。ここで、 オフセット = (合成結果配列の挿入ポインタアドレス (本例では、 13)—1)—スレイブ 側挿入開始点アドレス (本例では、 5) ) = 7
である。尚、オフセットの計算時に、合成結果配列の挿入ポインタアドレスは 13に固 定されている。また、スレイブ側挿入開始点アドレスは、スレイブ側特定ノード 2のノー ド番号である。したがって、合成結果配列 [13] = 5 + 7= 12、及び、合成結果配列 [ 14] = 5 + 7= 12のようになる。
[0123] 図 34は、本発明の一実施例による挿入点以降の処理の説明図である。同図に示さ れた手順 7では、手順 2及び手順 5と同様の操作を繰り返す。具体的には、マスタ側 のノード 10及びノード 11につ!/、て、変換配列 [i]に(マスタ側の C→P配列のアドレス 番号) +nIns=i+ 5を格納する。ここで、 iはマスタ側のノード番号を表す。次に、マス タ側の C→P配列 [i]の内容 jをアドレスとして変換配列 [j]を参照し、変換配列 [j]の 内容を、合成結果配列 [変換配列 [i] ]に格納する。例えば、 i= 10のとき、変換配列 [ 10]に、 10 + 5 = 15を格納し、次に、 C→P配列 [10]の内容である 9をアドレスとして 、変換配列 [9]を参照し、この変換配列 [9]の内容である 12を、合成結果配列 [変換 配列 [10] ] =合成結果配列 [15]に格納する。 1= 11の場合も同様である。
[0124] 以上の処理によって、合成結果配列、即ち、マスタ側データにスレイブ側データの 特定ノードの子孫ノードを挿入することにより生成された新たなデータ構造の深さ優 先モードに基づく「子→親」表現形式の親子関係が得られる。図 35は、本発明の一 実施例によるノード挿入処理の結果の説明図である。同図には、深さ優先モードに 基づくノード番号によるツリー構造と、対応する深さ優先の「子→親」表現による親子 関係と、が示されている。
[0125] 尚、ノード挿入処理によって得られた深さ優先モードの記述は、必要に応じて、図 1 6A、 B及び図 17を参照して説明した [深さ優先「子→親」表現から幅優先「子→親」 表現への変換]を用いることにより、 O (n)の操作で幅優先モードの記述に変換する ことができる。
[0126] [情報処理装置]
図 36は、本発明の一実施例によるツリー型データ構造を構築する情報処理装置 3 600のブロック図である。情報処理装置 3600は、ツリー型データ構造を表現するデ ータを記憶する記憶部 3601と、スレイブ側データ中のスレイブ側特定ノードの子孫ノ ードを特定する子孫ノード特定部 3602と、スレイブ側特定ノードに対応したマスタ側 データ中のマスタ側特定ノードの子孫ノードとして、スレイブ側特定ノードの子孫ノー ドをマスタ側データに挿入し、新たな親子関係を表現する情報を記憶部 3601に格 納するノード挿入部 3603と、を含む。
[0127] 好ましい一実施例によれば、ノードに付与された固有のノード識別子は、同じ世代 のノードよりも子ノードを優先して付与された連続する整数である。また、マスタ側デ ータ及びスレイブ側データのそれぞれにおいて、ノード間の親子関係は、非ルート' ノードの各々に付与されたノード識別子の順に関連付けられた非ルート'ノードの各 々の親ノードに付与されたノード識別子力 なる配列によって表現される。
[0128] 子孫ノード特定部 3602は、スレイブ側データの親子関係を表現する配列中のスレ イブ側特定ノードに付与されたノード識別子が格納されている位置の次の位置から、 スレイブ側特定ノードに付与されたノード識別子の値以上の値が格納されている連 続領域を抽出することにより、スレイブ側特定ノードの全ての子孫ノードを特定する。
[0129] また、ノード挿入部 3603は、マスタ側データ中のノードとスレイブ側データ中のスレ イブ側特定ノードの子孫ノードに、スレイブ側特定ノードの子孫ノードがマスタ側デー タ中のマスタ側特定ノードの子孫ノードに挿入される順序で、同じ世代のノードよりも 子ノードを優先してノード識別子を付与し、当該ノード識別子の順に対応する親ノー ドのノード識別子を関連付けることにより、マスタ側データのノード間の親子関係を表 現する配列にスレイブ側データ中のスレイブ側特定ノードの子孫ノードの親子関係を 表現する配列が挿入された新たな親子関係を表現する配列を生成する。
[0130] さらに、好ましい一実施例によれば、情報処理装置 3600において、ノード挿入部 3 603は、マスタ側データのノードがマスタ側特定ノードであるかどうかを判定するノー ド判定部 3631と、マスタ側データのノードがマスタ側特定ノードではない場合、当該 ノードに同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノード の当該ノード識別子に当該ノードの親ノードのノード識別子を関連付ける非特定ノー ド操作部 3632と、マスタ側データのノードがマスタ側特定ノードである場合、マスタ側 特定ノードにノード識別子を付与し、続いて、マスタ側特定ノードの子孫ノードとして、 スレイブ側特定のノードの子孫ノードに、同じ世代のノードよりも子ノードを優先してノ ード識別子を付与し、当該子孫ノードのそれぞれにその親ノードのノード識別子を関 連付ける特定ノード操作部 3633と、を含む。 [0131] 本発明は、以上の実施の形態に限定されることなぐ特許請求の範囲に記載された 発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含される ものであることは言うまでもない。
図面の簡単な説明
[0132] [図 1]図 1は、本発明の実施の形態に力かるツリー型データ構造を取り扱うコンビユー タシステムのブロックダイヤグラムである。
[図 2]図 2A、 Bは、ツリー形式データの一例である POSデータの説明図であり、図 2A は、このツリー形式データのデータ構造 (即ち、トポロジー)及びデータ値を視覚的に 表現した例、図 2Bは、同じツリー形式データを XML形式で表現した例を示す。
[図 3]図 3A〜Cは、アークリストを用いたツリー型データ構造の表現形式の一例の説 明図である。
[図 4]図 4A〜Cは、本発明の一実施例による「子→親」関係に基づくツリー型データ 構造の表現方法の説明図である。
[図 5]図 5は、本発明の一実施例によるツリー型データ構造を記憶装置上に構築する 方法のフローチャートである。
[図 6]図 6A〜Cは、本発明の一実施例により ID形式のツリー構造型データを整数連 番形式のツリー構造型データへ変換する処理の説明図である。
[図 7]図 7A〜Cは、本発明の他の一実施例により ID形式のツリー構造型データを整 数連番形式のツリー構造型データへ変換する処理の説明図である。
[図 8]図 8は、本発明の一実施例による深さ優先に基づくノード定義処理のフローチ ヤートである。
[図 9]図 9は、本発明の一実施例により作成された「子→親」表現に基づく親子関係の 配列の説明図である。
[図 10]図 10は、図 6A〜Cに示された深さ優先のツリー型データ構造から作成された 「親→子」表現に基づく親子関係の配列の説明図である。
[図 11]図 11は、本発明の一実施例による幅優先に基づくノード定義処理のフローチ ヤートである。
[図 12]図 12は、本発明の一実施例により作成された「子→親」表現に基づく親子関 係の配列の説明図である。
[図 13]図 13は、図 7A〜Cに示された深さ優先のツリー型データ構造から作成された 「親→子」表現に基づく親子関係の配列の説明図である。
[図 14]図 14は、本発明の一実施例による三つの表現形式の相互変換の関係を示す 図である。
[図 15]図 15は、本発明の一実施例によるコンピュータシステムによって実現されるッ リー型データ構造の構築方法のフローチャートである。
[図 16]図 16A、 Bは、本発明の一実施例による深さ優先「子→親」表現から幅優先「 子→親」表現への変換の説明図である。
[図 17]図 17は、本発明の一実施例による深さ優先「子→親」表現力 幅優先「子→ 親」表現への変換方法のフローチャートである。
[図 18]図 18A、 Bは、本発明の一実施例による幅優先「子→親」表現から深さ優先「 子→親」表現への変換の説明図である。
[図 19]図 19は、本発明の一実施例による幅優先に基づくノードの親子関係を深さ優 先に基づくノードの親子関係に変換する処理の説明図である。
[図 20]図 20は、本発明の一実施例による「子→親」表現から「親→子」表現への変換 方法のフローチャートである。
[図 21]図 21は、本発明の一実施例による「親→子」表現から「子→親」表現への変換 方法のフローチャートである。
[図 22]図 22A〜Cは、本発明の一実施例によるツリー型データ構造におけるノード挿 入の説明図である。
[図 23]図 23は、本発明の一実施例によるノード挿入方法のフローチャートである。
[図 24]図 24A〜Cは、それぞれ、図 22A〜Cに対応した深さ優先「子→親」表現形式 の説明図である。
[図 25]図 25は、本発明の一実施例による新たな親子関係を表現する配列を生成す る処理のフローチャートである。
[図 26]図 26は、本発明の一実施例によるノード挿入処理におけるノードの実体的な 値の取り扱い方の一例の説明図である。 [図 27]図 27は、本発明の一実施例によるノード挿入処理の全体的な説明図である。 圆 〇 28]図 28A〜Fは、本発明の一実施例による子孫ノードを特定する処理の説明図 である。
[図 29]図 29は、本発明の一実施例による挿入処理の初期状態の説明図である。
[図 30]図 30A〜Cは、本発明の一実施例による最初の挿入点までの処理の説明図 である。
[図 31]図 31は、本発明の一実施例による最初の挿入点における挿入処理の説明図 である。
[図 32]図 32は、本発明の一実施例による次の挿入点までの処理の説明図である。
[図 33]図 33は、本発明の一実施例による 2回目の挿入点における挿入処理の説明 図である。
[図 34]図 34は、本発明の一実施例による挿入点以降の処理の説明図である。
[図 35]図 35は、本発明の一実施例によるノード挿入処理の結果の説明図である。
[図 36]図 36は、本発明の一実施例によるノード挿入操作を行う情報処理装置のプロ ック図である。
符号の説明
コンピュータシステム
12 CPU
14 RAM
16 ROM
18 固定記憶装置
20 CD— ROMドライバ
22 I/F
24 入力装置
26 表示装置
3600 情報処理装置
3601
3602 子孫ノード特定部 3603 ノード挿入部 3631 ノード判定部 3632 非特定ノード操作部 3633 特定ノード操作部

Claims

請求の範囲
[1] ツリー型データ構造をもつマスタ側データにツリー型データ構造をもつスレイブ側 データのノードを挿入するノード挿入方法であって、
前記マスタ側データ及び前記スレイブ側データのそれぞれにお 、て、ルート ·ノード を含むノードに固有のノード識別子が付与され、前記ルート'ノード以外のノードであ る非ルート'ノードの各々に付与されたノード識別子に前記非ルート'ノードの各々の 親ノードに付与されたノード識別子が関連付けられ、これにより、ノード間の親子関係 が表現され、
当該ノード挿入方法は、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステップと 前記スレイブ側特定ノードに対応した前記マスタ側データ中のマスタ側特定ノード の子孫ノードとして、前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側デー タに挿入するステップと、
を含む、
ことを特徴とするノード挿入方法。
[2] 前記ノードに付与された固有のノード識別子は、同じ世代のノードよりも子ノードを 優先して付与された連続する整数である、請求項 1に記載のノード挿入方法。
[3] 前記マスタ側データ及び前記スレイブ側データのそれぞれにおいて、前記ノード間 の親子関係は、前記非ルート'ノードの各々に付与されたノード識別子の順に関連付 けられた前記非ルート'ノードの各々の親ノードに付与されたノード識別子力 なる配 列によって表現され、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定するステップは 、前記スレイブ側データの前記親子関係を表現する配列中の前記スレイブ側特定ノ ードに付与されたノード識別子が格納されて 、る位置の次の位置から、前記スレイブ 側特定ノードに付与されたノード識別子の値以上の値が格納されている連続領域を 抽出することにより、前記スレイブ側特定ノードの全ての子孫ノードを特定するステツ プを含む、 請求項 2に記載のノード挿入方法。
[4] 前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側データに挿入するステ ップは、前記マスタ側データ中のノードと前記スレイブ側データ中の前記スレイブ側 特定ノードの前記子孫ノードに、前記スレイブ側特定ノードの前記子孫ノードが前記 マスタ側データ中の前記マスタ側特定ノードの子孫ノードに挿入される順序で、同じ 世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノード識別子の順 に対応する親ノードのノード識別子を関連付けることにより、前記マスタ側データのノ ード間の親子関係を表現する配列に前記スレイブ側データ中の前記スレイブ側特定 ノードの前記子孫ノードの親子関係を表現する配列が挿入された新たな親子関係を 表現する配列を生成するステップを含む、
請求項 2又は 3に記載のノード挿入方法。
[5] 前記新たな親子関係を表現する配列を生成するステップは、
前記マスタ側データのノードについて、前記マスタ側特定ノードが現れるまで、同じ 世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当該ノード 識別子に当該ノードの親ノードのノード識別子を関連付けるステップと、
前記マスタ側特定ノードにノード識別子を付与し、前記マスタ側特定ノードの子孫ノ ードとして、前記スレイブ側特定のノードの前記子孫ノードに、同じ世代のノードよりも 子ノードを優先してノード識別子を付与し、当該子孫ノードのそれぞれにその親ノー ドのノード識別子を関連付けるステップと、
前記マスタ側データに未だノード識別子が付与されていない残りのノードが存在す る場合、当該残りのノードについて、同じ世代のノードよりも子ノードを優先してノード 識別子を付与し、当該残りのノードの当該ノード識別子に親ノードのノード識別子を 関連付けるステップと、
を含む、
請求項 4に記載のノード挿入方法。
[6] ツリー型データ構造をもつマスタ側データ及びツリー型データ構造をもつスレイブ 側データを記憶する記憶手段を含み、
前記記憶手段に記憶された前記マスタ側データ及び前記スレイブ側データのそれ ぞれは、ルート'ノードを含むノードに固有のノード識別子が付与され、前記ルート'ノ ード以外のノードである非ルート'ノードの各々に付与されたノード識別子に前記非 ルート'ノードの各々の親ノードに付与されたノード識別子が関連付けられ、これによ り、ノード間の親子関係が表現されている、
情報処理装置であって、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定する子孫ノード 特定手段と、
前記スレイブ側特定ノードに対応した前記マスタ側データ中のマスタ側特定ノード の子孫ノードとして、前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側デー タに挿入し、新たな親子関係を表現する情報を前記記憶手段に格納するノード挿入 手段と、
を含む、
情報処理装置。
[7] 前記ノードに付与された固有のノード識別子は、同じ世代のノードよりも子ノードを 優先して付与された連続する整数である、請求項 6に記載の情報処理装置。
[8] 前記マスタ側データ及び前記スレイブ側データのそれぞれにおいて、前記ノード間 の親子関係は、前記非ルート'ノードの各々に付与されたノード識別子の順に関連付 けられた前記非ルート'ノードの各々の親ノードに付与されたノード識別子力 なる配 列によって表現され、
前記子孫ノード特定手段は、前記スレイブ側データの前記親子関係を表現する配 列中の前記スレイブ側特定ノードに付与されたノード識別子が格納されて 、る位置 の次の位置から、前記スレイブ側特定ノードに付与されたノード識別子の値以上の値 が格納されて ヽる連続領域を抽出することにより、前記スレイブ側特定ノードの全て の子孫ノードを特定する、
請求項 7に記載の情報処理装置。
[9] 前記ノード挿入手段は、前記マスタ側データ中のノードと前記スレイブ側データ中 の前記スレイブ側特定ノードの前記子孫ノードに、前記スレイブ側特定ノードの前記 子孫ノードが前記マスタ側データ中の前記マスタ側特定ノードの子孫ノードに挿入さ れる順序で、同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該 ノード識別子の順に対応する親ノードのノード識別子を関連付けることにより、前記マ スタ側データのノード間の親子関係を表現する配列に前記スレイブ側データ中の前 記スレイブ側特定ノードの前記子孫ノードの親子関係を表現する配列が挿入された 新たな親子関係を表現する配列を生成する、
請求項 7又は 8に記載の情報処理装置。
[10] 前記子孫ノード挿入手段は、
前記マスタ側データのノードが前記マスタ側特定ノードであるかどうかを判定する手 段と、
前記マスタ側データのノードが前記マスタ側特定ノードではな 、場合、当該ノード に同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当 該ノード識別子に当該ノードの親ノードのノード識別子を関連付ける手段と、 前記マスタ側データのノードが前記マスタ側特定ノードである場合、前記マスタ側 特定ノードにノード識別子を付与し、前記マスタ側特定ノードの子孫ノードとして、前 記スレイブ側特定のノードの前記子孫ノードに、同じ世代のノードよりも子ノードを優 先してノード識別子を付与し、当該子孫ノードのそれぞれにその親ノードのノード識 別子を関連付ける手段と、
を含む、
請求項 9に記載の情報処理装置。
[11] ツリー型データ構造をもつマスタ側データ及びツリー型データ構造をもつスレイブ 側データを記憶する記憶装置を含み、前記記憶装置に記憶された前記マスタ側デ ータ及び前記スレイブ側データのそれぞれは、ルート'ノードを含むノードに固有のノ ード識別子が付与され、前記ルート'ノード以外のノードである非ルート'ノードの各々 に付与されたノード識別子に前記非ルート'ノードの各々の親ノードに付与されたノ ード識別子が関連付けられ、これにより、ノード間の親子関係が表現されている、コン ピュータに、
前記スレイブ側データ中のスレイブ側特定ノードの子孫ノードを特定する機能と、 前記スレイブ側特定ノードに対応した前記マスタ側データ中のマスタ側特定ノード の子孫ノードとして、前記スレイブ側特定ノードの前記子孫ノードを前記マスタ側デー タに挿入し、新たな親子関係を表現する情報を前記記憶装置に格納する機能と、 を実現させるためのプログラム。
[12] 前記ノードに付与された固有のノード識別子は、同じ世代のノードよりも子ノードを 優先して付与された連続する整数である、請求項 11に記載のプログラム。
[13] 前記マスタ側データ及び前記スレイブ側データのそれぞれにおいて、前記ノード間 の親子関係は、前記非ルート'ノードの各々に付与されたノード識別子の順に関連付 けられた前記非ルート'ノードの各々の親ノードに付与されたノード識別子力 なる配 列によって表現され、
前記子孫ノードを特定する機能は、前記スレイブ側データの前記親子関係を表現 する配列中の前記スレイブ側特定ノードに付与されたノード識別子が格納されて ヽる 位置の次の位置から、前記スレイブ側特定ノードに付与されたノード識別子の値以 上の値が格納されて 、る連続領域を抽出することにより、前記スレイブ側特定ノード の全ての子孫ノードを特定する機能を含む、
請求項 12に記載のプログラム。
[14] 前記新たな親子関係を表現する情報を前記記憶装置に格納する機能は、前記マ スタ側データ中のノードと前記スレイブ側データ中の前記スレイブ側特定ノードの前 記子孫ノードに、前記スレイブ側特定ノードの前記子孫ノードが前記マスタ側データ 中の前記マスタ側特定ノードの子孫ノードに挿入される順序で、同じ世代のノードより も子ノードを優先してノード識別子を付与し、当該ノード識別子の順に対応する親ノ ードのノード識別子を関連付けることにより、前記マスタ側データのノード間の親子関 係を表現する配列に前記スレイブ側データ中の前記スレイブ側特定ノードの前記子 孫ノードの親子関係を表現する配列が挿入された新たな親子関係を表現する配列を 生成する機能を含む、
請求項 12又は 13に記載のプログラム。
[15] 前記新たな親子関係を表現する配列を生成する機能は、
前記マスタ側データのノードが前記マスタ側特定ノードであるかどうかを判定する機 能と、 前記マスタ側データのノードが前記マスタ側特定ノードではな 、場合、当該ノード に同じ世代のノードよりも子ノードを優先してノード識別子を付与し、当該ノードの当 該ノード識別子に当該ノードの親ノードのノード識別子を関連付ける機能と、 前記マスタ側データのノードが前記マスタ側特定ノードである場合、前記マスタ側 特定ノードにノード識別子を付与し、前記マスタ側特定ノードの子孫ノードとして、前 記スレイブ側特定のノードの前記子孫ノードに、同じ世代のノードよりも子ノードを優 先してノード識別子を付与し、当該子孫ノードのそれぞれにその親ノードのノード識 別子を関連付ける機能と、
を含む、
請求項 14に記載のプログラム。
請求項 11乃至 15のうちいずれか 1項に記載のプログラムを記録したコンピュータ読 み取り可能な記録媒体。
PCT/JP2005/011237 2004-06-23 2005-06-20 ノードを挿入する方法、装置及びプログラム WO2006001241A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006528509A JP4681555B2 (ja) 2004-06-23 2005-06-20 ノード挿入方法、情報処理装置、および、ノード挿入プログラム
US11/571,191 US20090019067A1 (en) 2004-06-23 2005-06-20 Method, apparatus, and program for inserting node

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-184497 2004-06-23
JP2004184497 2004-06-23

Publications (1)

Publication Number Publication Date
WO2006001241A1 true WO2006001241A1 (ja) 2006-01-05

Family

ID=35781724

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/011237 WO2006001241A1 (ja) 2004-06-23 2005-06-20 ノードを挿入する方法、装置及びプログラム

Country Status (3)

Country Link
US (1) US20090019067A1 (ja)
JP (1) JP4681555B2 (ja)
WO (1) WO2006001241A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1857945A1 (en) * 2005-01-25 2007-11-21 Turbo Data Laboratories, Inc. Tree search, totalizing, sort method, information processing device, and tree search, totalizing, and sort program
US8825710B2 (en) * 2011-05-26 2014-09-02 Planet Technologies Cloud computing method for dynamically scaling a process across physical machine boundaries
CA2815156C (en) * 2013-05-06 2020-05-05 Ibm Canada Limited - Ibm Canada Limitee Document order management via relaxed node indexing
US20160217302A1 (en) * 2015-01-23 2016-07-28 Karim Kassam High-speed, hacker-resistant computer data storage and retrieval system
KR102300791B1 (ko) * 2017-03-20 2021-09-09 엘지전자 주식회사 공기조화기 및 그 제어방법
US10872090B2 (en) * 2018-09-18 2020-12-22 Mastercard International Incorporated Generating test data based on data value rules of linked data nodes
US20240160614A1 (en) * 2022-11-15 2024-05-16 Oracle International Corporation Method for fast and efficient computing of tree form-factors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS648448A (en) * 1987-07-01 1989-01-12 Hitachi Ltd Expression system for tree structure data
JP2003271443A (ja) * 2002-03-15 2003-09-26 Toshiba Corp 構造化データ格納システムおよび方法、構造化データ検索システムおよび方法、記録媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6426750B1 (en) * 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US20030236968A1 (en) * 2002-06-19 2003-12-25 Anindya Basu Method and apparatus for generating efficient data structures for use in pipelined forwarding engines
CN101180623A (zh) * 2004-06-03 2008-05-14 特博数据实验室公司 数组的生成方法、信息处理装置以及程序
EP2077512A1 (en) * 2004-10-04 2009-07-08 Clearpace Software Limited Method and system for implementing an enhanced database
US8209305B2 (en) * 2006-04-19 2012-06-26 Microsoft Corporation Incremental update scheme for hyperlink database
US8392366B2 (en) * 2006-08-29 2013-03-05 Microsoft Corporation Changing number of machines running distributed hyperlink database

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS648448A (en) * 1987-07-01 1989-01-12 Hitachi Ltd Expression system for tree structure data
JP2003271443A (ja) * 2002-03-15 2003-09-26 Toshiba Corp 構造化データ格納システムおよび方法、構造化データ検索システムおよび方法、記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SEDGEWICK R. TRANSLATED BY NOGE K. ET AL.: "Algorithm", vol. 1ST ED., 1990, KISO.SEIRETSU, pages: 39 - 55, XP003005650 *

Also Published As

Publication number Publication date
JP4681555B2 (ja) 2011-05-11
JPWO2006001241A1 (ja) 2008-07-31
US20090019067A1 (en) 2009-01-15

Similar Documents

Publication Publication Date Title
JP4537391B2 (ja) ツリー型データ構造を取り扱う方法、情報処理装置、及び、プログラム
JP4886693B2 (ja) 情報処理方法、情報処理装置および情報処理プログラム
JP4681544B2 (ja) 配列の生成方法、情報処理装置、及び、プログラム
US7353222B2 (en) System and method for the storage, indexing and retrieval of XML documents using relational databases
JP4653157B2 (ja) ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム
JP4796970B2 (ja) ツリーデータの検索・集計・ソート方法及びプログラム
JP4712718B2 (ja) 配列の生成方法、及び、配列生成プログラム
JP5241738B2 (ja) 表からツリー構造データを構築する方法及び装置
US8935267B2 (en) Apparatus and method for executing different query language queries on tree structured data using pre-computed indices of selective document paths
EP1482431A2 (en) System and method of multidimensional query results processing
IL157575A (en) Encoding structural information in part for efficient search and browsing of information
JP4681555B2 (ja) ノード挿入方法、情報処理装置、および、ノード挿入プログラム
CN114372174A (zh) 一种xml文档分布式查询方法及系统
KR100660028B1 (ko) 데이터베이스 개념 구조에 기반한 xml 트리의 색인 및질의 방법
CA2468372C (en) System and method of multidimensional query results processing
JP2004310249A (ja) Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体
Castro et al. From XML to relational models
KR100555982B1 (ko) 확장 마크업 언어로 작성된 문서를 위한 정보검색 시스템및 그 방법과 그 방법을 실행시키기 위한 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체
Böttcher et al. Generalizing and improving SQL/XML query evaluation
Lam et al. Fast Ordering for Changing XML Data

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 BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

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

121 Ep: the epo has been informed by wipo that ep was designated in this application
DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2006528509

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05751100

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 11571191

Country of ref document: US