Abstract:
A method for upgrading data in a system adapted to implementing one or more programs includes a) loading a new program into the system and a version adapter for changing the old data previously stored in the system; b) generating new data adapted to the new program by processing the old data using the version adapter; c) storing the generated new data in a separate memory area; d) determining whether the new program operates normally by implementing the new data; and e) deleting an old program and old data if the new program is determined to operate normally.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    The present invention relates to a method for upgrading data used for operation of a system, and more particularly to a method for upgrading a processing system with new data and a new program by processing old data using a data version adapter, and the new program can then be implemented in the processor using the new data.  
           [0003]    2. Background of the Related Art  
           [0004]    A system is generally operated using a plurality of processors. As shown in FIG. 1, these processors normally include a program  12  and data  14  stored in a storage medium which is to be used by the program. Processor  10  operates the program and the data to perform a specific function. The program  12  and the data  14  are separately stored in a test field and a data field. The program  12  may be upgraded to improve or change a function of the system. In this case, a data structure of the program may be changed after upgrading the program. In other words, a data structure adapted to an upgraded new program may differ from a data structure before upgrading the program.  
           [0005]    Meanwhile, an old program may be changed to a new program upgraded by uniform downloading. However, the data are not downloaded due to bulk size, and a method for upgrading data in which attributes of the data used in the old program are only changed is applied to the new program.  
           [0006]    [0006]FIG. 2 illustrates a case where there is a change in the number of tables, attributes and records in a data structure after data has been upgraded. In the process of upgrading an old program which is operating in a processor, if the processor is operated by loading new data without changing a data structure of the old program (hereinafter, referred to as “old data structure”) which is operating in the processor before upgrading the program, the data structure of the new program differs from the data structure (old data structure) actually operating in the processor. This causes an error in the operation of the system.  
           [0007]    To prevent system errors due to upgrading the program, as shown in FIGS. 3 and 4, old data  44  of an old program  42  operating in the processor is backed up into an external device  100  in step S 31 . Then, the structure of the backed up old data  44  is changed to adapt to a new program  42  which will be loaded into the processor, thereby generating new data  54  in steps S 32  and S 33 .  
           [0008]    The external device changes the structure of the old data  44  to generate the new data  54 . Also, the external device stores the new program  52  which will be loaded into the processor and loads the new program  52  and the new data  54  into the processor  50 . In other words, the new data  54  and the new program  52  are loaded into the processor in step S 34 , so that the new program  52  is implemented in the new program  52  in step S 35 .  
           [0009]    Meanwhile, as shown in FIG. 4, two processors, namely, an active processor  40  and a standby processor  50 , may be provided in the system to stably operate the system. If two processors are provided in the system, the active processor which stores the old program  42  and the old data  44  backs up the old data  44  into the external device  100  of the system. The data structure is then changed to adapt to the new program  52  so that the new data  54  are generated. The data are upgraded in such a standby loading way that the generated new data  54  and the new program  52  are loaded into the processor  50 .  
           [0010]    A method for upgrading a program in case where two processors are provided will be described with reference to FIGS. 4 and 5. It is assumed that the processor  40  (or the processor A) is active and the processor  50  (or the processor B) is on standby.  
           [0011]    According to this method, the old data  44  stored in the processor A is backed up into the external device  100  of the system and then the structure of the backed up old data  44  is changed to adapt to the new program  52  which will be loaded, thereby generating the new data  54  in steps S 52  and S 53 . Both use the active processor and the standby processor, which are operating with the old program and the old data, is stopped in step S 54 . The new data  54  and the new program  52  are loaded into the standby processor B in step S 55 . Also, the processor A, which is active, is changed to a standby state, and at the same time the processor B which is on standby is changed to an active state in step S 56 . In step S 57 , it is determined whether the processor B into which the new program  52  and the new data  54  are loaded is normally operated.  
           [0012]    If the processor B is normally operated, both processors are operated in step S 58 . Then, in step S 59 , the new program  52  and the new data  54  are copied from the processor B, which is active, to the processor A which is on standby.  
           [0013]    However, if the processor B is not normally operated, the processor B is changed to a standby state and at the same time the processor A is changed to an active state in step S 60 . After the old program  42  stored in the processor A is implemented in step S 61 , both processors are operated to return to the state before upgrading the program and the data in step S 62 .  
           [0014]    As described above, the conventional system upgrades data in such a way that the data operating in the active processor A of the system are backed up into the external device, so that the data structure may be changed to adapt to the new program and the changed new data and the new program may be loaded into the standby processor B. In this case, the following problems occur.  
           [0015]    Since the operation of changing the data backed up into the external device of the system to the data structure adapted to the new program is performed by the processor off-line, much time is required. (Particularly, more problems occur in case of backed up data on an overseas line). Also, the management (adding/deleting) of data and elements of the system is limited for a time period (several hours˜several days) required to process the operating data to adapt to the new program by backup. In other words, the conventional method for upgrading software has problems in that it fails to add/delete the data and the elements of the system for a time period required to generate the new data off-line by backing up the operating data and thus it requires assistance of the off-line.  
           [0016]    The above references are incorporated by reference herein where appropriate for appropriate teachings of additional or alternative details, features and/or technical background.  
         SUMMARY OF THE INVENTION  
         [0017]    An object of the invention is to solve at least the above problems and/or disadvantages and to provide at least the advantages described hereinafter.  
           [0018]    An object of the present invention to provide a method for upgrading a program, in which new data adapted to a new program, which will be loaded into a processor, are generated by processing old data using a data version adapter, so that a time period required to add/delete elements of the system is minimized within several minutes and stopping of service can be avoided, thereby stably managing the system.  
           [0019]    In order to achieve the above-described objects of the present invention, there is provided a method for upgrading data in a processor that can have a plurality of programs and data, comprising the steps of. loading a new program and a means for changing the data; generating a new data adapted to the new program by processing the data, which is operating in the processor, using the means; storing the generated new data in a separate memory area; determining whether the new program is normally operated by implementing the new data; and deleting an old program and old data if the new program is not normally operated.  
           [0020]    In the preferred embodiment of the present invention, the old program is implemented if the new program is not normally operated.  
           [0021]    In another aspect of the present invention, there is provided a method for upgrading data in a plurality of processors, comprising the steps of: stopping both use of the processors; loading a first data version adapter into the first processor and loading a second data version adapter and a new program into the second processor; transmitting old data to the second data version adapter by means of the first data version adapter; generating and storing new data adapted to the new program by processing the transmitted old data by means of the second data version adapter; changing the state of the processors; determining whether the new program is normally operated in the second processor; deleting the old program and the old data if the new program is normally operated; and copying the new program and the new data into the first processor.  
           [0022]    In yet another aspect of the present invention, there is provided a method for upgrading data in a plurality of processors, comprising the steps of: stopping both use of the processors; loading a first data version adapter into the first processor and loading a second data version adapter and a new program into the second processor; generating new data adapted to the new program by processing old data by means of the first data version adapter and transmitting and storing the new data to and in the second data version adapter; changing the state of-the processors; determining whether the new program is normally operated; deleting the old program and the old data if the new program is normally operated; and copying the new program and the new data into the first processor.  
           [0023]    In the preferred embodiment of the present invention, the method further comprises the steps of: returning the changed processor to its original state if the new program is not normally operated; implementing the old program stored in the first processor and deleting the new program and the new data stored in the second processor; and copying the old program and the old data into the second processor so as to enable both use of the processors.  
           [0024]    Therefore, the new data adapted to the new program, which will be loaded into the processor, are generated by processing the old data using the data version adapter, so that a time period required to add/delete elements of the system is minimized within several minutes and stop of service can be avoided, thereby stably managing the system.  
           [0025]    Additional advantages, objects, and features of the invention will be set forth in part in the description which follows and in part will become apparent to those having ordinary skill in the art upon examination of the following or may be learned from practice of the invention. The objects and advantages of the invention may be realized and attained as particularly pointed out in the appended claims. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0026]    The invention will be described in detail with reference to the following drawings in which like reference numerals refer to like elements wherein:  
         [0027]    A more complete appreciation of the invention, and many of the attendant advantages thereof, will be readily apparent as the same becomes better understood by reference to the following detailed description when considered in conjunction with the accompanying drawings in which like reference symbols indicate the same or similar components, wherein:  
         [0028]    [0028]FIG. 1 is a block diagram illustrating a program and data stored in a processor;  
         [0029]    [0029]FIG. 2 is a block diagram illustrating a data structure changed after upgrading a program;  
         [0030]    [0030]FIG. 3 is a flow chart illustrating a conventional method for upgrading data in a processor;  
         [0031]    [0031]FIG. 4 is a block diagram illustrating a conventional method for upgrading data in double processors;  
         [0032]    [0032]FIG. 5 is a flow chart illustrating a conventional method for upgrading data in double processors;  
         [0033]    [0033]FIG. 6 is a block diagram illustrating a state where a data version adapter and a new program are loaded into a processor to upgrade data in accordance with the present invention;  
         [0034]    [0034]FIG. 7 is a flow chart illustrating a method for upgrading data in accordance with the present invention;  
         [0035]    [0035]FIG. 8 is a block diagram illustrating a state where a data version adapter and a new program are loaded into a processor to upgrade data of double processors in accordance with the present invention;  
         [0036]    [0036]FIG. 9 is a flow chart illustrating a method for upgrading data in double processors in accordance with the first embodiment of the present invention;  
         [0037]    [0037]FIG. 10 is a flow chart illustrating a method for upgrading data in double processors that generate new data in an active processor in accordance with the second embodiment of the present invention; and  
         [0038]    [0038]FIG. 11 is a flow chart illustrating a method for upgrading data in accordance with the third embodiment of the present invention.  
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0039]    A method for upgrading data in accordance with preferred embodiments of the present invention will now be described in detail with reference to the accompanying drawings.  
         [0040]    [0040]FIG. 6 is a block diagram illustrating a state where a data version adapter  62  and a new program  64  are loaded into a processor  600  to upgrade a program in accordance with the present invention. The data version adapter  62  changes a structure of an old data  70  to adapt to a new program  64  which is upgraded, and generates and stores a new data  68  by adding contents not included in the old data  70  if a new function is added in accordance with upgrading the program. The data version adapter will now be described in more detail.  
         [0041]    The data version adapter  62  is a program that generates new data in accordance with a data rule of the new data by reading an old data. Examples of the data rule of the new data include a rule of added/deleted attributes, a rule of each attribute of added/deleted tuples, and a rule of a table when the table is added/deleted. The basic algorithm is as follows.  
         [0042]    1) Information is sent to the data version adapter, which stores the new data by reading the old data for each tuple of each table tuple#, attribute 1 , 2 , . . . , n (in this case, the read data is dependent. That is, the read data is dependent upon the system).  
         [0043]    2) The data version adapter that stores the new data is programmed with the data rule of the new data.  
         [0044]    3) The data version adapter that stores the new data upgrades the received old data based on the data rule of the new data to thereby generate the new data.  
         [0045]    4) The generated new data is stored in a memory area.  
         [0046]    At this time, the processor  600  still stores the old program  66  and the old data  70 . This is to operate the processor  600  by means of the old program  66  and the old data  70  if the new program  64  and the new data  68  are not normally operated in the processor  600 .  
         [0047]    [0047]FIG. 7 is a flow chart illustrating the method for upgrading data in accordance with a first embodiment of the present invention. To upgrade the data operating in the processor  600 , the data version adapter  62  and the new program  64  are loaded into the processor  600  in step S 71 .  
         [0048]    The data version adapter  62  loaded into the processor  600  reads the old data  70  in accordance with the data structure of the old program  66 . Then, the data version adapter  62  changes the structure of the old program  66  to adapt to the new program  64 , and preferably at the same time adds new contents not included in the old data  70  to generate the new data  68  in step S 72 . The generated new data  68  is stored in a new memory area so as not to overlap the memory area that stores the old data  70  in step S 73 . This is because the old data should be used to operate the old program if the new program is not normally operated, and to avoid collision between the old data and the new data, which may occur because the data version adapter generates the new data while reading the old data.  
         [0049]    Once the new data  68  having a structure and contents adapted to the new program  64  is generated as above, the new data  68  is implemented by the new program  64  loaded into the processor  600  in step S 74 . In this case, it is determined whether the new program  64  is normally operated in the processor  600  in step S 75 . If the new program  64  is normally operated in the processor  600 , the old program  66  and the old data  70  are deleted in step S 76 . If the new program  64  is not normally operated in the processor  600 , the old program  66  is again operated in step S 77 . Then, the system returns to the original state before the program and the data are upgraded by deleting the new program  64  and the new data  68  in step S 78 .  
         [0050]    The method for loading the data version adapter  62  and the new program  64  into the processor  600  depends on each loading method according to the system. To transmit a new package in the loading method, there may be provided inter processor communication (IPC) of the system, LAN, and serial and parallel communication. The data version adapter  62  and the new program, which are loaded into the processor, are stored in a storage medium such as a hard disk, a flash memory, a digital audio tape (DEAT), and a magneto optical disk (MOD).  
         [0051]    A method for generating the new data by processing the old data will now be described. Data attributes of the old data include interface, address, netmask, and speed. If the number of tuples of a table is 10, the data version adapter of the active processor sends data to the data version adapter of the standby processor by reading the data from the old data as follows.  
         [0052]    [tuple( 1 ), interface(if 1 ),address(addr 1 ),netmask(net 1 ),speed(sp 1 )  
         [0053]    tuple( 2 ), interface(if 2 ),address(addr 2 ),netmask(net 2 ),speed(sp 2 )  
         [0054]    tuple( 3 ), interface(if 3 ),address(addr 3 ),netmask(net 3 ),speed(sp 3 )  
         [0055]    tuple( 4 ), interface(if 4 ),address(addr 4 ),netmask(net 4 ),speed(sp 4 )  
         [0056]    tuple( 5 ), interface(if 5 ),address(addr 5 ),netmask(net 5 ),speed(sp 5 )  
         [0057]    tuple( 6 ), interface(if 6 ),address(addr 6 ),netmask(net 6 ),speed(sp 6 )  
         [0058]    tuple( 7 ), interface(if 7 ),address(addr 7 ),netmask(net 7 ),speed(sp 7 )  
         [0059]    tuple( 8 ), interface(if 8 ),address(addr 8 ),netmask(net 8 ),speed(sp 8 )  
         [0060]    tuple( 9 ), interface(if 9 ),address(addr 9 ),netmask(net 9 ),speed(sp 9 )  
         [0061]    tuple( 10 ), interface(if 10 ),address(addr 10 ),netmask(net 10 ),speed(sp 10 )] 
         [0062]    It is assumed that bandwidth is added to the data attributes of the new program as the data version adapter of the standby processor reads the data. In this case, a reference value is 10 Mbp, and the new data are generated by processing the data as follows if 5 tuples are additionally provided (it is assumed that each data attribute of the added tuples has an initial value of 0).  
         [0063]    [tuple( 1 ),interface(if 1 ),address(addr 1 ),netmask(net 1 ),speed(sp 1 ),bandwidth( 10 )  
         [0064]    tuple( 2 ),interface(if 2 ),address(addr 2 ),netmask(net 2 ),speed(sp 2 ),bandwidth( 10 )  
         [0065]    tuple( 3 ),interface(if 3 ),address(addr 3 ),netmask(net 3 ),speed(sp 3 ),bandwidth( 10 )  
         [0066]    tuple( 4 ),interface(if 4 ),address(addr 4 ),netmask(net 4 ),speed(sp 4 ),bandwidth( 10 )  
         [0067]    tuple( 5 ),interface(if 5 ),address(addr 5 ),netmask(net 5 ),speed(sp 5 ),bandwidth( 10 )  
         [0068]    tuple( 6 ),interface(if 6 ),address(addr 6 ),netmask(net 6 ),speed(sp 6 ),bandwidth( 10 )  
         [0069]    tuple( 7 ),interface(if 7 ),address(addr 7 ),netmask(net 7 ),speed(sp 7 ),bandwidth( 10 )  
         [0070]    tuple( 8 ),interface(if 8 ),address(addr 8 ),netmask(net 8 ),speed(sp 8 ),bandwidth( 10 )  
         [0071]    tuple( 9 ),interface(if 9 ),address(addr 9 ),netmask(net 9 ),speed(sp 9 ),bandwidth( 10 )  
         [0072]    tuple( 10 ),interface(if 10 ),address(addr 10 ),netmask(net 10 ),speed(sp 10 ),bandwidth( 10 )  
         [0073]    tuple( 11 ),interface( 0 ),address( 0 ),netmask( 0 ),speed( 0 ),bandwidth( 0 )  
         [0074]    tuple( 12 ),interface( 0 ),address( 0 ),netmask( 0 ),speed( 0 ),bandwidth( 0 )  
         [0075]    tuple( 13 ),interface( 0 ),address( 0 ),netmask( 0 ),speed( 0 ),bandwidth( 0 )  
         [0076]    tuple( 14 ),interface( 0 ),address( 0 ),netmask( 0 ),speed( 0 ),bandwidth( 0 )  
         [0077]    tuple( 15 ),interface( 0 ),address( 0 ),netmask( 0 ),speed( 0 ),bandwidth( 0 )] 
         [0078]    Adding and deleting the data attributes and the tuples is determined by the new program. The tuples are defined as a set of values related to attributes in a relation table of a relation data base. The relation values in the relation data base are stored in a table. In the table, rows are the attributes and columns are the tuples. The tuples act as records in a non-relation file.  
         [0079]    The method for implementing the new program  64  using the new data  68  acts to the method for implementing the new program  64  loaded by stopping the old program  66  which is under the operation. This method depends on a unique method of each system.  
         [0080]    [0080]FIG. 8 is a block diagram illustrating a state where data version adapters  810  and  910  and a new program  920  are loaded into double processors  800  and  900  to upgrade data of the double processors in accordance with an embodiment of the present invention.  
         [0081]    If an active processor  800  and a standby processor  900  are doubly provided in the system, the data version adapter  810  is loaded into the active processor  800  which stores an old program  820  and an old data  830  and the data version adapter  910  and the new program  920  are loaded into the standby processor  900 . The old data  830  is then changed to a new data  930  adapted to the new program  920  by means of the data version adapter  810  loaded into the active processor  800  and the standby processor  900 . Thus, the data are upgraded in such a way that the programs of the active processor  800  and the standby processor  900  are adapted to the new data. A method for upgrading data of the double processors will be described in more detail with reference to FIG. 9.  
         [0082]    [0082]FIG. 9 is a flow chart illustrating a method for upgrading data in the double processors  800  and  900  of FIG. 8. It is assumed that the processor  800  (or the processor A) is active and the processor  900  (or the processor B) is on standby.  
         [0083]    If the active processor A and the standby processor B are provided, both use the processors A and B which are operating is stopped in step S 91 . The data version adapter  910  is loaded into the processor A that stores the old program  820  and the old data  830  and at the same time the data version adapter  910  and the new program  920  are loaded into the standby processor B in step S 92 . The data version adapter  810  loaded into the processor A reads the old data  830  in accordance with the data structure of the old program  820 , and transmits the read old data  830  to the data version adapter  910  loaded into the processor B in step S 93 .  
         [0084]    After receiving the old data  830 , the data version adapter  910  of the processor B processes the old data  830  to change its structure to adapt to the new program  920  and generates and stores the new data  930  by adding new contents not included in the old data  830  in step S 94 . The processor A which is active is changed to a standby state and at the same time the processor B which is on standby is changed to an active state in step S 95 . The new program  920  loaded into the processor B which is changed to the active state is implemented in step S 96 . Afterwards, it is determined whether the new program  920  is normally operated in the processor B in step S 97 .  
         [0085]    If the new program  920  is normally operated in the processor B, the old program  820  and the old data  830 , which are stored in the processor A, are deleted in step S 98 . Both of the two processors are operated and at the same time the new program  920  and the new data  930  are copied from the processor B to the processor A in step S 100 .  
         [0086]    However, if the new program  920  is not normally operated in the processor B as a result of the step S 97 , the processor B is changed to the standby state and at the same time the processor A is changed to the active state in step S 101 . The old program  820  stored in the processor A is implemented and at the same time the new program  920  and the new data  930 , which are stored in the processor B, are deleted in step S 102 . Both processors are operated to return to the original state before upgrading the program in step S 103 .  
         [0087]    Generally, the data version adapters loaded into the active processor and the standby processor in FIG. 8 are different programs. That is, the data version adapter loaded into the active processor acts to transmit the old data to the data version adapter of the standby processor by reading the old data. The data version adapter loaded into the standby processor acts to process the new data by receiving the old data transmitted from the data version adapter loaded into the active processor.  
         [0088]    [0088]FIG. 10 is a flow chart illustrating a method for upgrading data in the double processors A and B that generate the new data  930  in the active processor in accordance with a second embodiment of the present invention. It is assumed that the processor A is active and the processor B is on standby.  
         [0089]    If both the active processor A and the standby processor B are provided, both use the processors A and B which are operating is stopped in step S 110 . The data version adapter  810  is loaded into the processor A that stores the old program  820  and the old data  830  and at the same time the data version adapter  910  and the new program  920  are loaded into the standby processor B in step S 111 . After reading the old data  830  in accordance with the data structure of the old program  820 , the data version adapter  810  loaded into the processor A processes the read old data  830  to change its structure to adapt to the new program  920  and generates the new data  930  by adding new contents not included in the old data  830  in step S 112 . At the same time, the new data  930  is transmitted to the data version adapter  910  loaded into the processor B in step S 113 . The data version adapter  910  of the processor B receives and stores the new data.  
         [0090]    Afterwards, processor A which is active is changed to the standby state and at the same time processor B which is on standby is changed to the active state in step S 114 . The new program  920  loaded into the processor B which is changed to the active state is implemented in step S 115 .  
         [0091]    Next, it is determined whether the new program  920  is normally operated in the processor B in step S 116 . If the new program  920  is normally operated in the processor B, the old program  820  and the old data  830 , which are stored in the processor A, are deleted in step S 117 . Both processors are operated in step S 118  and at the same time the new program  920  and the new data  930  are copied from the processor B to the processor A in step S 119 .  
         [0092]    However, if the new program  920  is not normally operated in the processor B as a result of the step S 116 , the processor B is changed to the standby state and at the same time the processor A is changed to the active state in step S 120 . The old program  820  stored in the processor A is implemented and at the same time the new program  920  and the new data  930 , which are stored in the processor A, are deleted in step S 121 . Both processors are operated to return to the original state before upgrading the program in step S 122 .  
         [0093]    [0093]FIG. 11 is a flow chart illustrating a method for upgrading data in accordance with a third embodiment of the present invention. To adapt old data to a new program, a data version adapter and a new program, which are means for changing old data to new data, are loaded in step S 130 .  
         [0094]    Next, it is determined whether the active processor is linked to the other processor in S 131 . If the active processor is not linked to the other processor, it corresponds to the method of FIG. 7. In this case, a data structure is changed and new data are generated in step S 132 .  
         [0095]    In step S 133 , the new program and the new data are implemented using the result of the step S 132 .  
         [0096]    Next, it is checked whether the implemented new data are normally operated in step S 134 . If the new data are normally operated, the old program and the old data are deleted in step S 135 . If the new data are not normally operated, the old data are implemented in step S 136  and the new data and the new program are deleted in step S 137 .  
         [0097]    However, if the active processor is linked to the other processor as a result of the step S 131 , it is determined whether to change the old data in the active processor in step S 138 . If the old data are converted in the processor, it corresponds to the embodiment of FIG. 10. In this case, the data are transmitted in step S 139 .  
         [0098]    However, if the old data are not converted, it corresponds to the embodiment of FIG. 9. In this case, the data are transmitted to the other processor in step S 140  and then are converted in step S 141 . Afterwards, the operation of the steps S 134  to S 137  is performed.  
         [0099]    As described above, the method for upgrading data according to the present invention has at least the following advantages. Since the new data adapted to the new program, which will be loaded into the processor, are generated by processing the old data using the data version adapter, a time period required to add/delete elements of the system is minimized within several minutes and stop of service can be avoided, thereby stably managing the system.  
         [0100]    Although the preferred embodiments of the present invention have been described, it is understood that the present invention should not be limited to this preferred embodiments but various changes and modifications can be made by one skilled in the art within the spirit and scope of the present invention as hereinafter claimed.  
         [0101]    The foregoing embodiments and advantages are merely exemplary and are not to be construed as limiting the present invention. The present teaching can be readily applied to other types of apparatuses. The description of the present invention is intended to be illustrative, and not to limit the scope of the claims. Many alternatives, modifications, and variations will be apparent to those skilled in the art. In the claims, means-plus-function clauses are intended to cover the structures described herein as performing the recited function and not only structural equivalents but also equivalent structures.