Patent Publication Number: US-2021165779-A1

Title: Structured object generation

Description:
RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Application No. 62/942,882, filed on Dec. 3, 2019, entitled “STRUCTURED OBJECT GENERATION,” the disclosure of which is hereby incorporated herein by reference in its entirety. 
    
    
     BACKGROUND 
     It is sometimes necessary to generate, based on underlying data sources, a substantial number of information objects that contain data derived from the underlying data sources. 
     SUMMARY 
     In one embodiment a method is provided. The method includes accessing a first source record, the first source record comprising a plurality of object data fields, each object data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein each variable refers to an object data field in the first source record, wherein at least one object data field comprises a variable. The method further includes generating a first interpolated source record that has a plurality of object data fields corresponding to the plurality of object data fields of the first source record by, for each object data field in the first source record that comprises a variable, accessing content of the object data field to which the variable refers, and replacing the variable with the content to generate a fixed value for a corresponding object data field in the first interpolated source record. The method further includes accessing a first template record, the first template record comprising a plurality of template record data fields, each template record data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein at least one template record data field contains a variable that identifies an object data field of the first interpolated source record. The method further includes, subsequent to generating the first interpolated source record, generating a first interpolated template record by, for each template record data field that comprises a variable, accessing content of an object data field in the first interpolated source record to which the variable refers, and replacing the variable with the content to generate a fixed value for the object data field in the first interpolated template record. 
     In another embodiment a computing device is provided. The computing device includes a memory and a processor device coupled to the memory. The processor device is configured to access a first source record, the first source record comprising a plurality of object data fields, each object data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein each variable refers to an object data field in the first source record, wherein at least one object data field comprises a variable. The processor device is further configured to generate a first interpolated source record that has a plurality of object data fields corresponding to the plurality of object data fields of the first source record by, for each object data field in the first source record that comprises a variable, accessing content of the object data field to which the variable refers, and replacing the variable with the content to generate a fixed value for a corresponding object data field in the first interpolated source record. The processor device is further configured to access a first template record, the first template record comprising a plurality of template record data fields, each template record data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein at least one template record data field contains a variable that identifies an object data field of the first interpolated source record. The processor device is further configured to, subsequent to generating the first interpolated source record, generate a first interpolated template record by, for each template record data field that comprises a variable, accessing content of the object data field in the first interpolated source record to which the variable refers, and replacing the variable with the content to generate a fixed value for an object data field in the first interpolated template record. 
     In another embodiment non-transitory computer-readable storage medium is provided. The non-transitory computer-readable storage medium includes executable instructions configured to cause a processor device to access a first source record, the first source record comprising a plurality of object data fields, each object data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein each variable refers to an object data field in the first source record, wherein at least one object data field comprises a variable. The instructions are further configured to cause the processor device to generate a first interpolated source record that has a plurality of object data fields corresponding to the plurality of object data fields of the first source record by, for each object data field in the first source record that comprises a variable, accessing content of the object data field to which the variable refers, and replacing the variable with the content to generate a fixed value for a corresponding object data field in the first interpolated source record. The instructions are further configured to cause the processor device to access a first template record, the first template record comprising a plurality of template record data fields, each template record data field comprising one of a fixed value, a variable, or a fixed value and a variable, wherein at least one template record data field contains a variable that identifies an object data field of the first interpolated source record. The instructions are further configured to cause the processor device to, subsequent to generating the first interpolated source record, generate a first interpolated template record by, for each template record data field that comprises a variable, accessing content of the object data field in the first interpolated source record to which the variable refers, and replacing the variable with the content to generate a fixed value for the object data field in the first interpolated template record. 
     Those skilled in the art will appreciate the scope of the disclosure and realize additional aspects thereof after reading the following detailed description of the embodiments in association with the accompanying drawing figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure and, together with the description, serve to explain the principles of the disclosure. 
         FIG. 1  is a block diagram of an object generation system according to one embodiment; 
         FIG. 2  is a block diagram illustrating the generation of interpolated template records according to one embodiment; 
         FIG. 3  is a block diagram illustrating the generation of structured objects based on the interpolated template records according to one embodiment; 
         FIG. 4  is a flowchart of a method of structured object generation according to one embodiment; and 
         FIG. 5  is a block diagram of a computing device suitable for implementing structured object generation according to one embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     The embodiments set forth below represent the information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims. 
     Any flowcharts discussed herein are necessarily discussed in some sequence for purposes of illustration, but unless otherwise explicitly indicated, the embodiments are not limited to any particular sequence of steps. The use herein of ordinals in conjunction with an element is solely for distinguishing what might otherwise be similar or identical labels, such as “first message” and “second message,” and does not imply a priority, a type, an importance, or other attribute, unless otherwise stated herein. The term “about” used herein in conjunction with a numeric value means any value that is within a range of ten percent greater than or ten percent less than the numeric value. 
     As used herein and in the claims, the articles “a” and “an” in reference to an element refers to “one or more” of the element unless otherwise explicitly specified. The word “or” as used herein and in the claims is inclusive unless contextually impossible. As an example, the recitation of A or B means A, or B, or both A and B. 
     It is sometimes necessary to generate, based on underlying data sources, a substantial number of information objects that contain data derived from the underlying data sources. The information objects may be printed out, transmitted over a network to various destinations, or utilized in any number of different ways. Where the information objects number in the hundreds or thousands, manual generation by humans using computing devices is time-consuming and fraught with potential human error, such as typographical errors, and the like. It is often desirable to generate a plurality of information objects that relate to a particular subject matter domain, but that differ from one another. 
     The embodiments disclosed herein implement a highly automated structured object generation system that utilizes underlying data sources to generate any number of structured objects. 
       FIG. 1  is a block diagram of an object generation system  10  according to one embodiment. For purposes of illustration and explanation only, the object generation system  10  is illustrated as comprising three separate components, a source record interpolator  12 , a template record interpolator  14 , and an object generator  16 . However, it will be appreciated that the functionality described herein may be implemented using any number of different components, such as one component or more than three components. 
     In some embodiments, the object generation system  10  operates in three stages  18 ,  20  and  22  which may occur in the described sequence. The three stages  18 ,  20  and  22  will be described generally with regard to  FIG. 1 , and subsequently, detailed examples of the process described herein with regard to  FIG. 1  will be discussed below. 
     During the first stage  18 , the source record interpolator  12  accesses a source record structure  24 . The source record structure  24  contains one or more source records. Each source record includes one or more object data fields, each of which may initially have a fixed value, a variable, or a variable and one or more fixed values. A fixed value may comprise a “null” value, which means there is no value in the object data field. A variable in an object data field refers to a different object data field in the same source record, and is interpolated (i.e., replaced with content of that object data field), as described in greater detail below, in order to determine a fixed value for the variable. At a step  26 , the source record interpolator  12  performs source record interpolation on each source record and outputs corresponding interpolated source records  28 . The interpolated source records  28  comprise the same object data fields as those in the source records, but have no variables because each variable has been replaced with a fixed value based on the content of the object data field in the corresponding source record to which the variable refers. 
     During a second stage  20 , the template record interpolator  14  accesses a template record structure  30  that comprises at least one template record. The process described herein with respect to the second stage  20  is repeated for each template record in the template record structure  30 . Each template record comprises one or more template data fields. Each template data field comprises a fixed value, a variable, or a variable and one or more fixed values. Variables in a template data field refer to object data fields in the respective interpolated source record  28 . In some embodiments, the respective interpolated source record  28  may identify the particular template record structure  30  that is to be used for the respective interpolated source record  28 . Thus, different template record structures  30  may be utilized for different interpolated source records  28 . 
     At a step  32 , the template record interpolator  14  cycles through each template record in the template record structure  30  and uses the respective interpolated source record  28  to generate a plurality of interpolated template records  34 . In particular, for each template record in the template record structure  30 , the template record interpolator  14  utilizes the first interpolated source record  28  to interpolate the data fields in the template record to generate an interpolated template record  34 . 
     During the third stage  22 , at a step  36 , the object generator  16  accesses the interpolated template records  34  and generates a plurality of objects  38  based on the interpolated template records  34 . The object generator  16  may copy or modify data from the interpolated template records  34  to corresponding objects  38  based on one or more processing rules, as will be discussed in greater detail below. If more source records exist, this process is repeated for each such source record. 
       FIG. 2  is a block diagram illustrating generation of interpolated template records  34  according to one embodiment. Note that while for purposes of illustration the embodiments will be discussed herein in the context of generating structured textual objects associated with the automobile industry, the embodiments are not limited to any particular context, and could be used, by way of non-limiting example, in the real estate industry, retail industry, spare parts industry, or the like. 
     The source record structure  24  includes one or more source records  40 . While for purposes of illustration only a single source record  40  is illustrated, it will be appreciated that in practice the source record structure  24  may include tens, hundreds, or thousands of source records  40 . The source record  40  includes a plurality of object data fields  42 - 1 - 42 - 10  (generally, object data fields  42 ). Again, while for purposes of illustration the source record  40  is illustrated as having ten object data fields  42 , in practice a source record  40  may have any number of object data fields  42 . Each object data field  42  has a corresponding object data field identifier (ID)  44 - 1 - 44 - 10  (generally, object data field IDs  44 ). While the object data field IDs  44  are illustrated as having textual names for purposes of illustration, the object data field IDs  44  may comprise any type of ID. Moreover, while for purposes of illustration the object data field IDs  44 - 1 - 44 - 10  are shown in conjunction with the ten object data fields  42 , the object data field IDs  44 - 1 - 44 - 10  need not be part of the source record  40 , and the object data field IDs  44 - 1 - 44 - 10  need only somehow be correlated to the object data fields  42  through any desired means, such as a correlation structure (not illustrated), by convention, or the like. 
     Each object data field  42  has a fixed value, a variable, or a fixed value and a variable. A null value is a type of fixed value wherein there is no value in the object data field  42 . A fixed value can comprise any non-changing value. A fixed value can be numeric, alphanumeric, or any other value. A variable refers to another object data field in the same source record  40 . As an example, the object data fields  42 - 1 - 42 - 3 ,  42 - 5 - 42 - 6 , and  42 - 8 - 42 - 10  have fixed values, the object data field  42 - 4  has a fixed value (“CAMARO”) and a variable (“{{TRIM}}”), and the object data field  42 - 7  has three variables (“{{CAMPAIGN}}” “WAKED” and “{{MODEL}}”) and two fixed values “ ” (spaces). Note that spaces in any object data field  42  between two variables constitutes a fixed value. The variables may be denoted by some delimiter, in this embodiment, the characters “{{” and “}}”; however it should be understood that a variable may be identified in any desired manner. A variable refers to another object data field  42  in the same source record  40  by referring to the object data field ID  44  of the other object data field  42 . In this example, the variable “{{TRIM}}” in the object data field  42 - 4  refers to the object data field  42 - 5  (via the object data field ID  44 - 5 ). The object data field  42 - 7  contains three variables “{{CAMPAIGN}}”, “{{MAKE}}”, and “{{MODEL}}”. The three variables in the object data field  42 - 7  refer to object data fields  42 - 1 ,  42 - 3 , and  42 - 4  respectively. Note that the object data field  42 - 7  is a unique identifier so that, after the interpolation process discussed below, each interpolated source record  28  will have a corresponding unique ID. 
     The source record interpolator  12  ( FIG. 1 ) accesses the source record  40  to generate an interpolated source record  28 . In particular, for the object data fields  42 - 1 - 42 - 3 ,  42 - 5 - 42 - 6 , and  42 - 8 - 42 - 10 , each of which have fixed values, the source record interpolator  12  generates corresponding interpolated object data fields  46 - 1 - 46 - 3 ,  46 - 5 - 46 - 6 , and  46 - 8 - 46 - 10  that have the same corresponding fixed values. For the object data field  42 - 4 , the source record interpolator  12  determines that the object data field  42 - 4  contains a fixed value and a variable that contains the object data field identifier  44 - 5  and thus refers to the object data field  42 - 5 . The source record interpolator  12  accesses the corresponding interpolated object data field  46 - 5 , which has a fixed value of “SS”, and generates the interpolated object data field  46 - 4  by combining the values of “CAMARO” and “SS”. 
     For the object data field  42 - 7 , the source record interpolator  12  determines that the object data field  42 - 7  contains a plurality of variables that contain the object data field IDs  44 - 1 ,  44 - 3  and  44 - 4 , and thus refer to the object data fields  42 - 1 ,  42 - 3  and  42 - 4 , respectively. The source record interpolator  12  accesses the corresponding interpolated object data fields  46 - 1 ,  46 - 3  and  46 - 4  and generates the interpolated object data field  46 - 7  by combining the values of the interpolated fixed values from the interpolated object data fields  46 - 3 ,  46 - 4  and  46 - 6 . Note that the variable {{MODEL}} in the object data field  42 - 7  refers to the object data field  42 - 4 , which itself includes a variable {{TRIM}} which refers to the object data field  42 - 5 . This is an example of nested variables, such that there may be several cycles of interpolation to provide each interpolated object data field  46  in the interpolated source record  28  with a fixed value. 
     Note that in some embodiments, if an object data field  42  contains a variable and a fixed value, and the variable refers to another data field  42  that has no value (i.e., a null value), then the entire interpolated data field  46  that corresponds to the object data field  42  in the interpolated source record  28  will have no value (i.e., be a null value). Thus, the fixed value identified in the object data field  42  will be discarded. 
     After the interpolated source record  28  is generated, each of the interpolated object data fields  46  contain only fixed values. The template record interpolator  14  then accesses a template record structure  30 . In some embodiments, an interpolated data field  46  in the interpolated source record  28  may identify the particular template record structure  30  to use in conjunction with the particular interpolated source record  28 . Thus, different template record structures  30  may be used in conjunction with different interpolated source records  28 . In this example, the interpolated object data field  46 - 2  of the interpolated source record  28  identifies the template record structure  30 . 
     The template record structure  30  includes one or more template records  48 - 1 - 48 - 2 . While for purposes of illustration only two template records  48  are illustrated, it will be appreciated that in practice the template record structure  30  may include tens, hundreds, or thousands of template records  48 . The template record  48 - 1  includes a plurality of template record data fields  50 -A 1 - 50 -A 5  (generally, template record data fields  50 ). While for purposes of illustration the template record  48 - 1  is illustrated as having five template record data fields  50 , in practice a template record  48  may have any number of template record data fields  50 . Each template record data field  50  may have a corresponding template record data field ID  52 - 1 - 52 - 5  (generally, template record data field IDs  52 ). While for purposes of illustration the template record data field IDs  52 - 1 - 52 - 5  are shown in conjunction with the template record data fields  50 -A 1 - 50 -A 5 , the template record data field IDs  52 - 1 - 52 - 5  need not be part of the template records  48 , and the template record data field IDs  52 - 1 - 52 - 5  need only somehow be correlated to the template record data fields  50 -A 1 - 50 -A 5  through any desired means, such as a correlation structure (not illustrated), by convention, or the like. Each template record data field  50  may have a fixed value, a variable, or a fixed value and a variable. The template record interpolator  14  uses the interpolated source record  28  and the template record  48 - 1  to generate an interpolated template record  34 - 1 . 
     Notably, the template record interpolator  14  processes each template record  48 - 1 - 48 - 2  with the interpolated source record  28  to generate a plurality of interpolated template records  34 - 1 - 34 - 2 , with one interpolated template record  34  for each template record  48 . For example, if, in an example embodiment, the source record structure  24  comprises three source records  40 , the source record interpolator  12  generates three interpolated source records  28 . Assume for purposes of discussion that each of the three interpolated source records  28  identifies the template record structure  30  as the specific template to use to process the three interpolated source records  28 . 
     Assume that in such example embodiment the template record structure  30  comprises five template records  48 . The template record interpolator  14 , based on the first interpolated source record  28  and the five template records  48 , generates five interpolated template records  34 . The template record interpolator  14  then accesses the second interpolated source record  28 , and based on the second interpolated source record  28  and the five template records  48 , generates another five interpolated template records  34 . The template record interpolator  14  then accesses the third interpolated source record  28 , and based on the third interpolated source record  28  and the five template records  48 , generates another five interpolated template records  34 , for a total of fifteen interpolated template records  34 . 
     In the example illustrated in  FIG. 2 , assume that the template record interpolator  14  first accesses the template record data field  50 -A 1 . The template record interpolator  14  determines that the template record data field  50 -A 1  contains variables “{{MAKE}}” and “{{MODEL}}” that refer to the interpolated object data fields  46 - 3  and  46 - 4  of the interpolated source record  28 , respectively, and includes the fixed value “-BROAD”. The template record interpolator  14  generates an interpolated template data field  54 -A 1  that has the value “CHEVY CAMARO SS-BROAD” based on the interpolated object data fields  46 - 3  and  46 - 4  and the template record data field  50 -A 1 . In a similar manner, the template record interpolator  14  accesses the template record data fields  50 -A 2 - 50 -A 5 , interpolates any variables based on the values of the corresponding interpolated object data fields  46 , to generate interpolated template data fields  54 -A 2 - 54 -A 5 . Note that a template record data field  50  may comprise multiple fixed values interspersed with variables, as illustrated by template record data field  50 - 4  for example. 
     In a similar manner, the template record interpolator  14  accesses the template record  48 - 2  and generates an interpolated template record  34 - 2  based on template record data fields  50 -B 1 - 50 -B 5  of the template record  48 - 2  and on the interpolated source record  28  to generate interpolated template data fields  54 -B 1 - 54 -B 5 . 
     Note that in some embodiments, if a template record data field  50  contains a variable and a fixed value, and the variable refers to an interpolated data field  46  that has no value (i.e., a null value) in the interpolated source record  24 , then the entire template record data field  50  in the interpolated template record  34  will have no value (i.e., be a null value). Thus, the fixed value identified in template record data field  50  will be discarded. In some embodiments, where a data field contains an alternative separator, such as the character “A”, as discussed in greater detail below, each alternative is treated as a separate data field in that if an alternative contains a variable and a fixed value, and the variable refers to an interpolated data field  46  that has no value (i.e., a null value) in the interpolated source record structure  24 , then that alternative will have no value (i.e., be a null value). However, this will not affect the other alternative. If all alternatives are null, then the whole value is null. 
       FIG. 3  is a block diagram illustrating the generation of structured objects based on the interpolated template records  34  according to one embodiment. The object generator  16  contains one or more processing rules  56 . The processing rules  56  may comprise configurable parameters, may comprise programming instructions, or may be a combination of programming instructions and configurable parameters. The processing rules  56  determine how structured objects will be generated in response to a particular interpolated template record  34 . The processing rules may dictate, for example, that certain interpolated template data fields  54  in the interpolated template records  34  are not included in the structured object. 
     In this example, the object generator  16  accesses the interpolated template record  34 - 1  and generates a structured object  38 - 1  based on the processing rules  56  and the interpolated template record  34 - 1 . The structured object  38 - 1  includes three data fields  60 - 1 - 60 - 3 . In accordance with the processing rules, the data field  60 - 1  is given the value of the interpolated template data field  54 -A 2 , the data field  60 - 2  is given the value of the interpolated template data field  54 -A 3 , and the data field  60 - 3  is given a value based on the interpolated template data field  54 -A 4 . The processing rules in this example indicate that the interpolated template data field  54 -A 1  is not moved to the structured object  38 - 1 . 
     In this example, the processing rules  56  identify the character “A” as an alternative separator, and the particular alternative that will be used will be based on a maximum size of the corresponding data field in the structured object  38 - 1 . For example, the interpolated template data field  54 -A 3  identifies two alternative values, the first being “VISIT JENKINS CHEVROLET” and the second being “VISIT US TODAY”. The first alternative is 23 characters long and the second alternative is 14 characters long. If the data field  60 - 2  has a maximum size of 23 or greater characters, the object generator  16  uses the first alternative as the value of the data field  60 - 2 , and if the data field  60 - 2  has a size of less than 23 characters, the object generator  16  uses the second alternative as the value of the data field  60 - 2 . The interpolated template data field  54 -A 5  (i.e., the operator field) has a value of “WTE” which may instruct the object generator  16  to perform certain formatting on the structured object  38 - 1 , or to implement any other desired processing on the interpolated template data fields  54 -A 1 - 54 -A 5  to generate the structured object  38 - 1 . Note that the interpolated template data field  54 -A 5  is not copied to the structured object  38 - 1 . Note that a data field can have any number of alternative separators, and thus any number of alternatives. 
     Note that while only one structured object  38 - 1  is generated based on the interpolated template record  34 - 1 , in other embodiments, based on the processing rules  56 , multiple structured objects  38  may be generated from the interpolated template record  34 - 1 . 
     Similarly, the object generator  16  accesses the interpolated template record  34 - 2  and generates a structured object  38 - 2  based on the processing rules  56  and the interpolated template record  34 - 2 . In particular the object generator  16  accesses the interpolated template record  34 - 2  and generates a structured object  38 - 2  based on the processing rules  56  and the interpolated template record  34 - 2 . The structured object  38 - 2  includes three data fields  62 - 1 - 62 - 3 . In accordance with the processing rules, the data field  62 - 1  is given the value of the interpolated template data field  54 -B 2 , the data field  62 - 2  is given the value of the interpolated template data field  54 -B 3 , and the data field  62 - 3  is given a value based on the interpolated template data field  54 -B 4 . The processing rules in this example indicate that the interpolated template data field  54 -B 1  is not moved to the structured object  38 - 1 . 
     In this example, the interpolated template data field  54 -B 4  identifies two alternative values, the first being 71 characters long (“OUR BEST LEASES ON ALL CHEVY MODELS VISIT JENKINS CHEVROLET IN FLORENCE”) and the second being 60 characters long (“OUR BEST LEASES ON ALL CHEVY MODELS VISIT JENKINS CHEVROLET”). In this example, the data field  62 - 3  has a maximum size of 80 characters. In accordance with the processing rules, the object generator  16  utilizes the first presented alternative from the interpolated template data field  54 -B 4  to provide the value of the data field  62 - 3  in the structured object  38 - 2 . 
     The interpolated template data field  54 -B 5  (i.e., the operator field) has a value of “BMM” which may instruct the object generator  16  to perform certain formatting on the structured object  38 - 1 , or to implement any other desired processing on the interpolated template data fields  54 -B 1 - 54 -B 5  to generate the structured object  38 - 2 . Note that the interpolated template data field  54 -B 5  is not copied to the structured object  38 - 2 . In one embodiment, in response to the presence of the BMM operator, the object generator  16  will extract one or more keywords from a particular interpolated template data field  54  and generate a structured object having a field that contains the “+” character preceding each such keyword. As an example, if the keywords in the particular interpolated template data field  54  are “red dancing shoes”, the structured object has a data field of “+red+dancing+shoes”. 
     In another embodiment, if the interpolated template data field  54 -B 5  (i.e., the operator field) has a value of “exact”, the object generator  16  will extract the one or more keywords from the particular interpolated template data field  54  and generate a structured object having a field that contains the keywords bracketed by bracket characters. As an example, if the keywords in the particular interpolated template data field  54  are “red dancing shoes”, the structured object has a data field of “[red dancing shoes]”. 
     In another embodiment, if the interpolated template data field  54 -B 5  (i.e., the operator field) has a value of “negative exact” the object generator  16  will extract the one or more keywords from the particular interpolated template data field  54  and generate a structured object having a field that contains the keywords bracketed by bracket characters preceded by a minus character. As an example, if the keywords in the particular interpolated template data field  54  are “red dancing shoes”, the structured object has a data field of “-[red dancing shoes]”. 
     The structured objects  38  may then be subsequently processed, such as read or retrieved by downstream processes, printed, presented on a display device, and/or transmitted to another component for use in a desired application. In some embodiments, the structured objects  38  may comprise content that may be provided to search engines, such as Google or Bing search engines, to be presented on a display device of an individual entering a search query, in conjunction with search results of the search query. 
       FIG. 4  is a flowchart of a method for structured object generation according to one embodiment.  FIG. 4  will be discussed in conjunction with  FIGS. 1 and 2 . The object generation system  10  accesses source record  40 , the source record  40  comprising the plurality of object data fields  42 - 1 - 42 - 10 , each object data field  42  comprising one of a fixed value, a variable, or a fixed value and a variable, wherein each variable refers to an object data field in the source record  40  ( FIG. 4 , block  1000 ). The object generation system  10  generates the interpolated source record  28  that has the plurality of interpolated object data fields  46 - 1 - 46 - 10  corresponding to the plurality of object data fields  42 - 1 - 42 - 10  of the source record  40  by, for each object data field  42  that comprises a variable, accessing content of the object data field  42  to which the variable refers, and replacing the variable with the content to generate a fixed value for the corresponding object data field in the interpolated source record  28  ( FIG. 4 , block  1002 ). 
     The object generation system  10  accesses the first template record  48 - 1 , the first template record  48 - 1  comprising the plurality of template record data fields  50 -A 1 - 50 -A 5 , each template record data field  50  comprising one of a fixed value, a variable, or a fixed value and a variable, wherein at least one template record data field  50  contains a variable that identifies an interpolated object data field  46  of the interpolated source record  28  ( FIG. 4 , block  1004 ). Subsequent to generating the interpolated source record  28 , the object generation system  10  generates the interpolated template record  34 - 1 , by, for each template record data field  50  that comprises a variable, accessing content of the interpolated object data field  46  in the interpolated source record  28  to which the variable refers, and replacing the variable with the content to generate a fixed value for the interpolated template data field  54  in the interpolated template record ( FIG. 4 , block  1006 ). 
     In some embodiments each interpolated source record  28  may include a unique identifier. In the example illustrated in  FIG. 2 , the interpolated object data field  46 - 7  comprises a unique ID. All objects (e.g., structured objects  38 - 1  and  38 - 2 ) generated from the interpolated source record  28  are associated with the interpolated source record  28  from which such objects were derived. This association may be maintained in any desired manner, such as pointers in object metadata, physical location of the objects, or the like. In this example, the structured objects  38 - 1 ,  38 - 2  are associated with the interpolated source record  28 . 
     The embodiments disclosed herein implement an idempotence feature, wherein the object generation system  10 , based on the unique ID associated with an interpolated source record  28 , does not generate duplicate objects in response to processing the same interpolated source record  28  and the same template records  48 . For example, if after the process discussed above with regard to  FIGS. 2 and 3  to generate the structured objects  38 - 1 - 38 - 2 , the object generation system  10  were executed again based on the same source record  40  and the same template records  48 - 1 - 48 - 2 , the object generation system  10  determines that an interpolated source record  28  already exists and does not generate duplicative structured objects  38 - 1 - 38 - 2 . 
     Although the object generation system  10  will not generate duplicative objects, the object generation system  10  will update data fields in objects if a previously processed source record  40  and/or template record  48  are re-processed. In particular, based on the unique ID associated with the interpolated source record  28 , the object generation system  10  recognizes when a source record  40  for which an interpolated source record  28  exists is being processed again. The object generation system  10  determines whether any object data field  42  of the source record  40  has been modified since the previous processing. If so, the object generation system  10  updates the corresponding interpolated source record  28  to reflect the modified object data field  42 . The object generation system  10  also updates any previously generated interpolated template records  34 , and any previously generated structured objects  38 , if the modified object data field  42  affects the content of any previously generated structured object  38 . 
     As an example, referring again to  FIGS. 2 and 3 , assume that the object data field  42 - 10  of the source record  40  is modified from “JENKINS CHEVROLET” to “JANKINS CHEVROLET” to correct a typographical error. The object generation system  10  is executed to process the source record  40 . The object generation system  10  interpolates the source record  40  as discussed above, and determines, based on the unique ID object data field  42 - 7  after interpolation, that the corresponding interpolated source record  28  already exists. The object generation system  10  then determines that a difference exists in the interpolated object data field  46 - 10  of the interpolated source record  28  and the object data field  42 - 10  of the source record  40 . The object generation system  10  updates the interpolated object data field  46 - 10  of the interpolated source record  28  to be “JANKINS CHEVROLET”. 
     The object generation system  10  reprocesses the template records  48 - 1  and  48 - 2  and determines that the interpolated template records  34 - 1  and  34 - 2  already exist. The object generation system  10  updates any data fields in the interpolated template records  34 - 1  and  34 - 2  derived from template record data fields  50  that contain variables that refer to interpolated object data field  46 - 10  of the interpolated source records  28 . In this example, the object generation system  10  updates the interpolated template data field  54 -A 3  in the interpolated template record  34 - 1  to contain the value “VISIT JANKINS CHEVROLET {circumflex over ( )}VISIT US TODAY” and updates the interpolated template data field  54 -B 4  in the interpolated template record  34 - 2  to contain the value “OUR BEST LEASES ON ALL CHEVY MODELS VISIT JANKINS CHEVROLET IN FLORENCE {circumflex over ( )} OUR BEST LEASES ON ALL CHEVY MODELS VISIT JANKINS CHEVROLET”. 
     The object generation system  10  determines that the structured objects  38 - 1  and  38 - 2 , each derived based on the interpolated source records  28  already exist. Because the data field  60 - 2  in the structured object  38 - 1  contains data that is derived from the interpolated template data field  54 -A 3 , the object generation system  10  updates the data field  60 - 2  in the structured object  38 - 1  to have a value of “VISIT JANKINS CHEVROLET”. Because the data field  62 - 3  in the structured object  38 - 2  contains data that is derived from the interpolated template data field  54 -B 4 , the object generation system  10  updates the data field  62 - 3  in the structured object  38 - 2  to have a value of “OUR BEST LEASES ON ALL CHEVY MODELS VISIT JANKINS CHEVROLET IN FLORENCE”. 
       FIG. 5  is a block diagram of a computing device  64  suitable for implementing examples according to one example. The computing device  64  may comprise any computing or electronic device capable of including firmware, hardware, and/or executing software instructions to implement the functionality described herein, such as a computer server, a desktop computing device, a laptop computing device, or the like. The computing device  64  includes a processor device  66 , a system memory  68 , and a system bus  70 . The system bus  70  provides an interface for system components including, but not limited to, the system memory  68  and the processor device  66 . The processor device  66  can be any commercially available or proprietary processor. 
     The system bus  70  may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and/or a local bus using any of a variety of commercially available bus architectures. The system memory  68  may include non-volatile memory  72  (e.g., read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc.), and volatile memory  74  (e.g., random-access memory (RAM)). A basic input/output system (BIOS)  76  may be stored in the non-volatile memory  72  and can include the basic routines that help to transfer information between elements within the computing device  64 . The volatile memory  74  may also include a high-speed RAM, such as static RAM, for caching data. 
     The computing device  64  may further include or be coupled to a non-transitory computer-readable storage medium such as a storage device  78 , which may comprise, for example, an internal or external hard disk drive (HDD) (e.g., enhanced integrated drive electronics (EIDE) or serial advanced technology attachment (SATA)), HDD (e.g., EIDE or SATA) for storage, flash memory, or the like. The storage device  78  and other drives associated with computer-readable media and computer-usable media may provide non-volatile storage of data, data structures, computer-executable instructions, and the like. Although the description of computer-readable media above refers to an HDD, it should be appreciated that other types of media that are readable by a computer, such as Zip disks, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the operating environment, and, further, that any such media may contain computer-executable instructions for performing novel methods of the disclosed examples. 
     A number of modules can be stored in the storage device  78  and in the volatile memory, including an operating system and one or more program modules, such as the object generation system  10 , which may implement the functionality described herein in whole or in part. Note that because the object generation system  10  is a component of the computing device  64 , functionality implemented by the object generation system  10  may be attributed to the computing device  64  generally. Moreover, in examples where the object generation system  10  comprises software instructions that program the processor device  66  to carry out functionality discussed herein, functionality implemented by the object generation system  10  may be attributed herein to the processor device  66 . 
     All or a portion of the examples may be implemented as a computer program product  80  stored on a transitory or non-transitory computer-usable or computer-readable storage medium, such as the storage device  78 , which includes complex programming instructions, such as complex computer-readable program code, to cause the processor device  66  to carry out the steps described herein. Thus, the computer-readable program code can comprise software instructions for implementing the functionality of the examples described herein when executed on the processor device  66 . The processor device  66 , in conjunction with the object generation system  10  in the volatile memory  74 , may serve as a controller, or control system, for the computing device  64  that is to implement the functionality described herein. 
     An operator may also be able to enter one or more configuration commands through a keyboard (not illustrated), a pointing device such as a mouse (not illustrated), or a touch-sensitive surface such as a display device. Such input devices may be connected to the processor device  66  through an input device interface  82  that is coupled to the system bus  70  but can be connected by other interfaces such as a parallel port, an Institute of Electrical and Electronic Engineers (IEEE) 1394 serial port, a Universal Serial Bus (USB) port, an IR interface, and the like. The computing device  64  may also include a communications interface  84 , such as an Ethernet transceiver, suitable for communicating with a network as appropriate or desired. 
     Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.