Patent Publication Number: US-8117239-B2

Title: Aggregating schema data from multiple sources

Description:
BACKGROUND 
     A data store may be associated with a schema that includes one or more properties that are described by a collection of attributes. Individual data stores may have unique schemas. The schema may be accessed by applications interacting with the data in the data store. The schema may provide information to the application regarding the format and characteristics of data and/or data fields within the data store. 
     SUMMARY 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
     Embodiments of the present invention generally relate to aggregating data from multiple schemas. In one embodiment, a first schema describing a first data store includes one or more properties that may be described by a combination of static information and contextual information. Similarly, a second schema describing a second store may contain one or more properties that are likewise described by a combination of static and contextual information. The first and second schema may contain the same property. In this case, the static information describing the property may be contained in the first schema and referenced by the second schema. The contextual information describing the property in the first schema and the second schema may be different. In an embodiment of the present invention, an aggregated property description is built for a property that is included in both the first and second schema. The aggregated property description may include the static information and the contextual information from first schema and the contextual information from the second schema. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is described in detail below with reference to the attached drawing figures, wherein: 
         FIG. 1  is a block diagram of an exemplary computing environment for use in implementing embodiments of the present invention; 
         FIG. 2  is a block diagram of an exemplary computing system architecture suitable for use in implementing embodiments of the present invention; 
         FIG. 3  is an illustration of a first schema definition that is suitable for use with embodiments of the present invention; 
         FIG. 4  is an illustration of a second schema definition that is suitable for use with embodiments of the present invention; 
         FIG. 5  is an illustration of a schema view illustrating information accessed across two or more schemas, in accordance with an embodiment of the present invention; 
         FIG. 6  is a flow diagram illustrating an exemplary method for aggregating schema data from two or more schemas, in accordance with an embodiment of the present invention; and 
         FIG. 7  is flow diagram illustrating an exemplary method for generating an aggregated attribute value between two or more schemas, in accordance with an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     The subject matter of the present invention is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described. 
     In one embodiment, the searching of multiple data stores and the presentation of unified results is facilitated by generating an aggregated property description derived from the schemas describing the multiple data stores. For example, a user may want to search a data store associated with online book retailer  1  and a second data store associated with online book retailer  2 . A typical search may look for a book based on title, author, publisher, or other such information. This information is stored in both data stores in a manner defined by the schemas used to describe the respective data stores. Among other things, the schema describes properties of the data store by setting forth attributes of the properties. Property attributes in the schema should not be confused with the property values in the data store. For example, Jack London could be a property value in the author field in the data store, whereas the property description in the schema contains the attributes (e.g. field length, number of authors, type) that define the type of data that can be stored in the author field in the data store. 
     In embodiments of the present invention, the two data stores may contain the same property having identical static attributes and potentially different contextual attributes. For example, the name of the property (e.g., “author”) is a static attribute that would need to be the same in both property descriptions. On the other hand, the field length attribute could be different in both property descriptions and is, therefore, a contextual attribute. Embodiments of the present invention generate a single aggregated property description that may be used by applications to search and present data from both data sources. For example, an aggregated property description for the author property would contain the static attribute values, and contextual attribute values that are identical in both property descriptions. Where the contextual attribute values are different, various rules may be run to resolve the difference and provide an attribute value. Examples of rules include averaging the attributes values, selecting the most capable attribute value, and selecting the least capable attribute value. In one embodiment, the rule selects the least capable attribute value for inclusion in the aggregated property description. An example of a least capable attribute value is a field length attribute with an attribute value of 10 in contrast to a field length attribute value of 20. 
     A schema usable with embodiments of the present invention may include a property description that includes both static information and contextual information to describe a property of its associated data store. While the contextual information is specific to the property for the present data store, the static information from the property description applies to that property in all data stores. In particular, other schemas may include a property reference that references the static information from the property description in the first schema and then sets forth the contextual information for the property for their respective data stores. In other words, multiple data stores may include the same property. The static information for that property will be set forth by a property description in one schema and will be referenced by a property reference in other schemas. Each schema will then specify the contextual information for that property that is particular to its respective data store (one schema sets forth the contextual information in a property description, while the other schemas set forth the contextual information in a property reference.) A schema suitable for use with embodiments of the present invention is described in U.S. patent application Ser. No. 12/054,998, filed on even date herewith, entitled “SCHEMA FOR FEDERATED SEARCHING.” 
     Accordingly, in one embodiment, the present invention relates to computer storage media having computer-executable instructions embodied thereon for performing a method for aggregating schema data from two or more schemas. The method includes receiving a plurality of static attributes associated with a plurality of static attribute values for a first property. The method also includes receiving from a first schema a plurality of contextual attributes associated with a first plurality of contextual attribute values for the first property and receiving from a second schema the plurality of contextual attributes associated with a second plurality of contextual attribute values for the first property. The method further includes generating an aggregated first property description including the plurality of static attributes associated with the plurality of static attribute values and the plurality of contextual attributes associated with a third plurality of contextual attribute values, wherein the third plurality of contextual attribute values are selected from the first plurality of contextual attribute values and the second plurality of contextual attribute values. The method further includes communicating the aggregated first property description. 
     In yet another embodiment, the present invention relates to a computerized system for aggregating property attribute values across two or more schemas associated with two or more data sources. The system includes a schema reception component for receiving at least a first schema and a second schema, wherein the first schema contains at least a first property described by a plurality of static attributes and a plurality of contextual attributes associated with a first plurality of contextual attribute values, and wherein the second schema contains at least a reference to the first property and the first property is further described by the plurality of contextual attributes associated with a second plurality of contextual attribute values. A contextual attribute value for a contextual attribute in the first schema may be different than the contextual attribute value for the contextual attribute in the second schema. The system also includes a schema property request component for receiving a request for an aggregated first property description based on the first schema and the second schema. The system further includes a property description component for building the aggregated first property description from the plurality of static attributes and the plurality of contextual attributes associated with contextual attributes selected from either the first plurality of contextual attribute values or the second plurality of contextual attribute values. The system further includes a communication component for communicating the aggregated first property description. 
     In another embodiment, the present invention relates to a computerized method for generating an aggregated attribute values between two or more schemas. The method including receiving a first selection associated with a first schema, the first schema including a first plurality of properties including a first property, the first property including a plurality of static attributes and a plurality of contextual attributes, the plurality of contextual attributes including a first individual attribute associated with a first attribute value. The method also includes receiving a second selection associated with a second schema, the second schema including a second plurality of properties including the first property from the first schema, the first property including the plurality of contextual attributes, the plurality of contextual attributes including the first individual attribute with an associated second attribute value that is different than the first attribute value. The method also includes generating an aggregated first property description that includes the plurality of static attributes and the first individual attribute associated with a third attribute value that is determined by running a rule over the first attribute value and the second attribute value, and communicating the aggregated first property description. 
     Having briefly described an overview of embodiments of the present invention, an exemplary operating environment suitable for use in implementing embodiments of the present invention is described below. 
     Referring to the drawings in general, and initially to  FIG. 1  in particular, an exemplary operating environment for implementing embodiments of the present invention is shown and designated generally as computing device  100 . Computing device  100  is but one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment  100  be interpreted as having any dependency or requirement relating to any one or combination of components illustrated. 
     The invention may be described in the general context of computer code or machine-usable instructions, including computer-executable instructions such as program components, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components including routines, programs, objects, components, data structures, and the like, refer to code that perform particular tasks, or implement particular abstract data types. Embodiments of the present invention may be practiced in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, specialty computing devices, etc. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network. 
     With continued reference to  FIG. 1 , computing device  100  includes a bus  110  that directly or indirectly couples the following devices: memory  112 , one or more processors  114 , one or more presentation components  116 , input/output (I/O) ports  118 , I/O components  120 , and an illustrative power supply  122 . Bus  110  represents what may be one or more busses (such as an address bus, data bus, or combination thereof). Although the various blocks of  FIG. 1  are shown with lines for the sake of clarity, in reality, delineating various components is not so clear, and metaphorically, the lines would more accurately be grey and fuzzy. For example, one may consider a presentation component such as a display device to be an I/O component. Also, processors have memory. The inventors hereof recognize that such is the nature of the art, and reiterate that the diagram of  FIG. 1  is merely illustrative of an exemplary computing device that can be used in connection with one or more embodiments of the present invention. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “hand-held device,” etc., as all are contemplated within the scope of  FIG. 1  and reference to “computer” or “computing device.” 
     Computing device  100  typically includes a variety of computer-readable media. By way of example, and not limitation, computer-readable media may comprise Random Access Memory (RAM); Read Only Memory (ROM); Electronically Erasable Programmable Read Only Memory (EEPROM); flash memory or other memory technologies; CDROM, digital versatile disks (DVDs) or other optical or holographic media; magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to encode desired information and be accessed by computing device  100 . 
     Memory  112  includes computer storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, nonremovable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc. Computing device  100  includes one or more processors that read data from various entities such as memory  112  or I/O components  120 . Presentation component(s)  116  present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc. I/O port(s)  118  allow computing device  100  to be logically coupled to other devices including I/O components  120 , some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc. 
     Turning now to  FIG. 2 , a block diagram is illustrated that shows an exemplary computing system architecture  200  suitable for aggregating property attribute values across two or more schemas, in accordance with an embodiment of the present invention. It will be understood and appreciated by those of ordinary skill in the art that the computing system architecture  200  shown in  FIG. 2  is merely an example of one suitable computing system and is not intended to suggest any limitation as to the scope of the use or functionality of the present invention. Neither should the computing system architecture  200  be interpreted as having any dependency or requirement related to any single component/module or combination of component/modules illustrated therein. 
     Computing system architecture  200  includes a schema reception component  210 , and property request component  212 , a property description component  214 , and a communication component  216 . Computing system architecture  200  may reside on a single computing device, such as computing device  100  shown in  FIG. 1 . In the alternative, computing system architecture  200  may reside in a distributed computing environment that includes multiple computing devices coupled with one another via one or more networks. Such networks may include, without limitation, one or more local area networks (LANs) and/or one or more wide area networks (WANs). Such network environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. Accordingly, the network, or combination of networks, is not further described herein. 
     Schema reception component  210  is configured to receive one or more schemas. A schema provides information about the structure of data in a data store. Each schema received may be associated with a corresponding data store. All of the information within a schema may be retrieved or only certain aspects of a schema may be retrieved as needed. The schemas may be received in response to the selection of one or more data stores for searching or other purposes. For example, a user may select two or more data sources through which they desire to search. In one embodiment, the schema reception component  210  seeks the appropriate schemas associated with selected data stores. The schemas may reside on any computer storage device that is communicatively coupled to the device on which the schema reception component  210  resides. Further, a schema may be supplied to the schema reception component  210  in advance and retrieved upon the need to interact with data in a data store associated with the schema. Other means of receiving or retrieving schemas are possible. 
     The property request component  212  is configured for receiving a request for a description of one or more properties within the one or more schemas received by the schema reception component  210 . A property is a component of a schema that may be utilized to describe aspects of the data structure. A property is described by attributes that are associated with attribute values. For example, a property attribute might be “name” and an associated attribute value could be “System.Start_Date.” Thus, the name of the property would be system start date. Examples of the attributes that might be used to describe a property include field length, data type, data format, label, the maximum value, the minimum value and is the property queryable. The associated attribute value for an attribute could be a number (e.g., integer, floating point, etc.), true/false, a text string or some other description. In general, several attributes are used to describe a single property. 
     In some embodiments, a property is described by a property description that sets forth a collection of static attributes and a collection of contextual attributes. The static attributes and attribute values are immutable and will be the same for all schemas having the property. Examples of static attributes include property name, property type, and property label, whether or not the property supports multiple values, and information about how the property&#39;s values should be formatted for display to users. Schemas having the same property that is defined by a property description in another schema will reference that schema and property description for the static attributes and values. The contextual attributes and attribute values may vary among schemas and will be defined by each schema. However, it is possible for schemas to include the same contextual attributes with the same attributes. 
     Generally, an attribute may be designated as static if it must have the same value across multiple schemas to maintain the fundamental character of the property. If the attribute values may be changed to suit individual data stores, without destroying the fundamental character of the property, then it may be classified as a contextual attribute. Thus, a property description describes a property by setting forth the static and contextual attributes included in the property and the attribute values associated with the respective attributes. The static attributes of the property description apply to all schemas that include the property including the schema with the property description and other schemas that reference the property description for that schema (e.g., as will be described in further detail below). The contextual attributes of the proper description apply to only the schema including the property description. 
     As noted above, a schema may refer to properties that are defined in other schemas by using property references. A property reference refers to a property description in another schema, such that the static attributes and attribute values from that property description are used to describe a given property for a data store. Additionally, the property reference includes contextual attributes and attribute values to describe the property for that data store. Together, the static attributes and values from the referenced property description and the contextual attributes and values defined by the property reference describe a property of the data store. 
     A property description component  214  is configured to generate an aggregated property description of a property that is included in two or more schemas. An aggregated property description is a single property description built using the static attributes and contextual attributes chosen from the property descriptions from more than one schema. The aggregated property description will include the static attributes and the associated attribute values of the property. Further, all of the contextual attributes for the property will be included. The values selected for association with the contextual attributes are chosen using rules that run over the combined contextual attributes. In one embodiment, the less capable of two conflicting attribute values are included in the aggregated property description. For example, a field length value attribute with an attribute value of 50 is less capable then an attribute value of 100. Where the attribute value associated with a contextual attribute is the same for the same property in two or more schemas, then that value is included in the aggregated property description. The property description component  214  may create aggregated property descriptions for multiple properties that are found in two or more schemas. 
     The communications component  216  is configured to communicate the aggregated property description to the application or component that requested the property description. 
     By way of example, with reference to  FIG. 3 , an illustration of a first schema definition that is suitable for use with embodiments of the present invention is shown and designated generally as reference numeral  300 . Schema definition  300  includes property  310  and property  320 . Property  310  is titled “System.Title” and includes a block of static information  312  and a block of contextual information  314 . The static information  312  includes the attribute  316 A “name,” attribute  316 B “label,” and attribute  316 C “type.” Each attribute corresponds with an attribute value  317 A,  317 B, and  317 C. Thus, attribute  316 A name corresponds with attribute value  317 A “System.Title.” Attribute  316 B “label” corresponds with attribute value  317 B “Title.” Similarly, contextual information  314  contains attributes  318 A,  318 B, and  318 C each corresponding respectively with an attribute value  319 A,  319 B, and  319 C. Property  320  includes static information block  322  and contextual information block  324 . Static information block  322  includes attributes  326 A,  326 B, and  326 C, each corresponding respectively with attribute value  327 A,  327 B, and  327 C. Similarly contextual information block  324  includes attribute  328 A,  328 B, and  328 C each corresponding respectively with attribute value  329 A,  329 B, and  329 C. Schema definition  300  is just one example of a schema definition that may be suitable for use in embodiments of the present invention. In general, a schema would have a large number of properties, but only two are shown for the sake of simplicity. Similarly, each property could have a large number of attributes but only six attributes are shown for the sake of simplicity. 
     By way of example, and with reference to  FIG. 4 , a second exemplary schema definition suitable for use with embodiments of the present invention is shown and designated generally as reference numeral  400 . Schema definition  400  includes property  410 , and property reference  420 . Property  410  includes static information block  412  and contextual information block  414 . Static information block  412  includes attributes  416 A,  416 B, and  416 C. Each attribute corresponds respectively with attribute value  417 A,  417 B, and  417 C. Contextual information block  414  includes attribute  418 A,  418 B, and  418 C. Each attribute corresponds respectively with attribute value  419 A,  419 B, and  419 C. Property reference  420  references the static information  322  from property  320  within schema definition  300 . For that reason, property reference  420  does not contain a static block of information. The static information for property reference  420  would be supplied by retrieving it from property  320  in schema definition  300 . Property reference  420  contains contextual information block  424  that is added to the static information  312  to form the property description for property reference  420 . Contextual information block  424  includes attribute  428 A, attribute  428 B, and attribute  428 C. Each attribute corresponds respectively with attribute value  429 A,  429 B, and  429 C. Contextual information block  424  includes the same attributes as contextual information block  324 . However, the attribute values associated with the attributes differ. Specifically, the attribute value  329 C associated with the maxValues attribute  328 C in contextual information block  324  is 16 while the corresponding attribute value  429 C in contextual information block  424  is 8. 
     By way of example, and with reference to  FIG. 5 , a schema view  500  illustrating the enumeration of schema definition  300  and schema definition  400  is shown. The enumeration determines which properties from the two schemas are included in the joint schema view. Various rules may be used to determine which properties to include in the joint schema view. In this example, a union enumeration rule is run that causes one copy of each property from the two schemas to be included. Duplicates are reconciled into an aggregated property. In this case, property  310  from schema definition  300  is shown with all of the information contained in property  310 . Property  410  is also shown with all of the information contained in it. Aggregated property  510  includes information from schema definition  300  and schema definition  400 . Static information block  322  and contextual information block  324  are included from schema definition  300 . Contextual information block  424  from schema definition  400  is also included in aggregated property  510 . In one embodiment, an intersection enumeration rule is run that causes only properties present in all of the joined schemas to be included. Different enumeration rules may be run depending on the reason for combining the schemas. 
     An aggregated property description may be built using the information contained in schema view  500 . When an aggregated property description is requested for aggregated property  510 , static information  312  will be included and rules will be run over contextual information block  324  and contextual information block  424  to determine which attribute values to associate with the respective attribute. When the attribute value associated with the attribute is the same in contextual information block  324  and contextual information block  424 , then that attribute value will be chosen for inclusion within the aggregated property description. For example, attribute  328  and corresponding attribute  428  is associated with attribute value  329 A,  429 A “true” in both contextual information block  324  and contextual information block  424 . Thus, “true” would be associated with attribute  328  within the aggregated property description. On the other hand, when the attribute value associated with the attribute is different in contextual information block  324  and contextual information block  424 , then the rule will run to determine the least capable of the two attribute values. For example, the attribute value associated with attribute  328 C in contextual information block  324  is “16” while the attribute value associated with attribute  328 C in contextual information block  424  is “8.” In this case, “8” is a less capable max value than “16”, therefore, attribute value “8” would be selected for inclusion within the aggregated property description. As stated previously, more than two schemas could be selected and therefore more than two blocks of contextual information could be reconciled to generate a single aggregated property description. 
     Referring next to  FIG. 6 , a flow diagram showing an exemplary method for aggregating schema data from two or more schemas is shown and designated generally as reference numeral  600 . At step  610 , a plurality of static attributes associated with a plurality of static attribute values for a first property is received. The first property is associated with both a first schema and a second schema. For example, property  320  in  FIG. 3 , and property  420  in  FIG. 4  are common to the two schemas. In one embodiment, the static information for the first property will be described in the first schema and referenced by the second schema. As described previously, the contextual properties that describe the first property may be different in the first and second schemas. 
     At step  620 , a plurality of contextual attributes associated with a first plurality of contextual attribute values for the first property are received from the first schema. At step  630 , a second plurality of contextual attribute values for the first property are received from the second schema, in each case, each contextual attribute will be associated with a single contextual attribute value. 
     At step  640 , an aggregated first property description is generated. The aggregated first property description includes the plurality of static attributes associated with the plurality of static attribute values. The aggregated first property description also includes the plurality of contextual attributes associated with a third plurality of contextual attribute values that are selected from the first plurality of contextual attribute values and the second plurality of contextual attribute values. In one embodiment, contextual attribute values are selected from the first plurality of contextual attribute values and a second plurality of contextual attribute values based on which attribute value is the least capable. For example, an attribute value allowing 10 names could be less capable than an attribute value allowing 20 names. At step  650 , the aggregated first property description is communicated (e.g. to an application, search utility). 
     Referring next to  FIG. 7 , a flow diagram showing an exemplary method for generating an aggregated attribute value between two or more schemas is shown and designated generally with reference numeral  700 . At step  710 , a first selection associated with a first schema is received. The first schema includes a first plurality of properties including a first property. The first property includes a plurality of static attributes and a plurality of contextual attributes. The plurality of contextual attributes includes a first individual attribute associated with a first attribute value. 
     At step  720 , a second selection associated with a second schema is received. The second schema includes a second plurality of properties in including the first property from the first schema. The first property includes the plurality of contextual attributes. The plurality of contextual attributes include the first individual attribute with an associated second attribute value that is different than the first attribute value associated with the first property in the first schema. 
     At step  730 , it is determined whether the first attribute value or the second attribute value associated with the first property in the first schema and second schema respectively is the least capable. At step  740 , an aggregated first property description including the plurality of static attributes in the first individual attribute is generated. In one embodiment, the least capable of the first attribute value and the second attribute value is chosen for inclusion within the aggregated first property description. At step  750 , the aggregated first property description is communicated (e.g. to an application, search utility). 
     The present invention has been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill-in-the-art to which the present invention pertains without departing from its scope. 
     From the foregoing, it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages which are obvious and inherent to the system and method. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated by and is within the scope of the claims.