![]() method to recommend data enrichment for a database, system in a computational environment and storag
专利摘要:
METHOD FOR RECOMMENDING DATA ENRICHMENTS FOR A DATABASE, SYSTEM IN A COMPUTER ENVIRONMENT AND COMPUTER STORAGE MEDIA. Aspects of the invention described herein refer to recommended data sources. In aspects, a request to provide data enrichment recommendations for a database is received in a recommendation engine (208). The recommendation engine (208) can perform static or dynamic analysis of data associated with the database and can further refine recommendations based on directives. The recommendation mechanism (208) can then provide the recommendations, if any, of data enrichments in order to allow a software developer, for example, to indicate whether data enrichments should be used. 公开号:BR112013032101B1 申请号:R112013032101-6 申请日:2012-06-05 公开日:2021-04-20 发明作者:Anthony Nino Bice;Hariharan Sivaramakrishnan;David Michael Robinson 申请人:Microsoft Technology Licensing, Llc; IPC主号:
专利说明:
BACKGROUND [001] Databases are a common commodity in today's business world. Even very simple business software applications often include the use of a database. As the use of databases has grown, the data sources that provide data that augment the data found in businesses and other databases have also grown. For example, a software developer might create a software application that accesses a database to determine addresses. Several Internet data sources that generate a map that includes directions to a destination are available. According to another example, there are several websites on the Internet that provide information about the weather. In fact, there are so many data sources available that it is a challenge for software developers to discover and use these data sources. [002] The invention claimed in this document is not limited to modalities that solve inconveniences or that operate only in environments such as those described above. Rather, the present ground is provided in order to illustrate an area of exemplary technology in which some of the modalities described in this document can be practiced. SUMMARY [003] In short, the aspects of the invention described in this document refer to the recommendation of data sources. In aspects, a request to provide data enrichment recommendations for a database is received in a recommendation engine. The recommendation engine can perform static or dynamic analysis of data associated with the database and can further refine recommendations based on policy. The recommendation engine can then provide the recommendations, if any, of data enrichments so as to allow a software developer, for example, to indicate whether data enrichments should be used. BRIEF DESCRIPTION OF THE DRAWINGS [004] Figure 1 is a block diagram representing an exemplary general purpose computing environment in which aspects of the invention described herein may be incorporated; [005] Figure 2 is a block diagram representing an exemplary environment in which aspects of the invention described in this document can be implemented; and [006] Figures 3 and 4 are flowcharts that generally represent the exemplary actions that may occur in accordance with the aspects of the invention described herein. DETAILED DESCRIPTION DEFINITIONS [007] As used herein, the term "includes" and its variants should be read as broad terms meaning "includes but is not limited to". The term "or" should be understood as "and/or" unless the context clearly indicates otherwise. The term "based on" should be read as "based at least in part on". The terms "a modality" and "the modality" should be understood as "at least one modality". The term "another modality" should be understood as "at least one other modality". [008] As used herein, terms such as "a", "an", and "a" are inclusive of one or more of the items or actions indicated. In particular, in the claims, a reference to an item generally means that at least one such item is present and a reference to an action means that at least one instance of the action is performed. [009] Sometimes, in this document, the terms "first", "second", "third" and so on may be used. Without additional context, the use of these terms in the claims is not intended to suggest an order, but rather is used for identification purposes. For example, the expression "first version" and "second version" do not necessarily mean that the first version is actually the first version or that it was created before the second version, or that the first version is requested or operated before the second versions . Instead, these expressions are used to identify different versions. [0010] Titles are for convenience only; and information about a particular topic can be found outside the section whose title indicates that topic. [0011] Other definitions, explicitly or implicitly, may be included below. EXEMPLARY OPERATING ENVIRONMENT [0012] Figure 1 illustrates an example of a suitable computer system environment 100 in which aspects of the invention described herein can be implemented. Computer system environment 100 is only an example of an appropriate computing environment and is not intended to suggest any limitations with respect to the scope of use or functionality of the aspects of the invention described herein. Nor should computing environment 100 be interpreted as having any dependency or requirement with respect to any one or a combination of components illustrated in exemplary operating environment 100. [0013] Aspects of the invention described in this document are operational with various other general-purpose or special-purpose computer system environments. Examples of well-known computing systems, environments or configurations that may be suitable for use with aspects of the invention described herein include personal computers, server computers, portable or laptop-type devices, multiprocessor systems, microcontroller-based systems, set converter apparatus top boxes, programmable electronic devices, network computers, minicomputers, mainframe computers, personal digital assistants (PDA), gaming devices, printers, devices including converter devices, media center, or other devices, embedded or fixed computing devices in automobile, other mobile devices, distributed computing environments that include any of the above systems or devices, or the like. [0014] Aspects of the invention described herein may be described in the general context of computer executable instructions, such as program modules, which are executed by a computer. Generally speaking, program modules include routines, programs, objects, components, data structures, or the like, that perform specific tasks or implement certain types of abstract data. Aspects of the invention described herein can also be practiced in distributed computing environments, in which tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located on a computer storage medium such as local or remote, including the memory storage devices. [0015] Referring to Figure 1, an exemplary system for implementing aspects of the invention described herein includes a general purpose computing device in the form of a computer 110. A computer may include any electronic device that is capable of execute an instruction. Components of computer 110 may include a processing unit 120, a system memory 130, and a system bus 121 that couple various system components including system memory to processing unit 120. System bus 121 may be any one of several types of bus structures, including a memory bus or memory controller, a peripheral bus, or a local bus that uses any of a variety of bus architectures. By way of example, and not limitation, these architectures include the Industrial Standard Architecture (ISA) bus, the Micro-Channel Architecture (MCA) bus, the Enhanced ISA Architecture (EISA) bus, the ISA local bus. Electronic Video Standards Association (VESA), the Peripheral Component Interconnect (PCI) bus, but also known as the Mezzanine bus, the Extended Peripheral Component Interconnect (AGP) bus (PCI-X, the Advanced Graphics Port (AGP), and the PCI Express bus (PCIe). [0016] Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes a volatile and non-volatile media, and a removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. [0017] Computer storage media include both a volatile or non-volatile medium as well as a removable or non-removable medium implemented in any method or technology for storing information, such as computer readable instructions, data structures, program modules or other data. Computer storage media include RAM memory, ROM memory, EEPROM memory, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape , storage on magnetic disk or other magnetic storage devices, or any other means that can be used to store the desired information and that can be accessed by means of the computer 110. [0018] Communication media typically embed computer readable instructions, data structures, program modules or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and include any media delivery of information. The term "modulated data signal" means a signal that has one or more of its characteristics defined or altered in such a way as to encode information in the signal. By way of example, and not limitation, communication media include wired media, such as a wired network or direct wired connection, and wireless media, such as an acoustic, RF (radio frequency) medium. infrared and other wireless medium. Combinations of any of the above items should also be included in the scope of computer readable media. [0019] System memory 130 includes computer storage media in the form of volatile and/or non-volatile memory, such as read-only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help transfer information between elements within the computer 110, such as during a boot, is typically stored in ROM memory 131. RAM memory 132 typically contains data. and/or program modules that are directly accessible to and/or that are currently operated by the processing unit 120. By way of example, and not limitation, Figure 1 illustrates an operating system 134, application programs 135, other program modules 136, and program data 137. The computer 110 may further include other removable/non-removable, volatile/non-volatile computer storage media. By way of example only, Figure 1 illustrates a hard disk drive 141 that reads from or writes to a non-removable, non-volatile magnetic medium, a magnetic disk drive 151 that reads from or writes to a magnetic disk removable, non-volatile 152, and an optical disk drive 155 that reads from or writes to a removable, non-volatile optical disk 156, such as a CD ROM or other optical medium. Other removable/non-removable, volatile/non-volatile computer storage media that can be used in the exemplary operating environment include magnetic tape cassettes, flash memory cards, digital ver-satile disks, other optical disks, digital video tape, memory Solid state RAM, solid state ROM memory, or similar. Hard disk drive 141 can be connected to system bus 121 through interface 140, and magnetic disk drive 151 and optical disk drive 155 can be connected to system bus 121 through an interface to removable memory non-volatile, such as interface 150. [0021] The units and their associated computer storage media presented above and illustrated in Figure 1 provide the storage of computer-readable instructions, data structures, program modules, and other data for the computer 110. In Figure 1, for example, hard disk drive 141 is illustrated as storage operating system 144, application programs 145, other program modules 146, and program data 147. It is noted that these components may be the same or different from operating system 134, from application programs 135, from other program modules 136, or from program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 receive different numbers in the present invention in order to illustrate that, at a minimum, they are different copies. [0022] A user can enter commands and information into the computer 110 through input devices, such as through a keyboard 162 or an indicating device 161, commonly referred to as a mouse, trackball, or touch pad. Touch. Other input devices (not shown) may include a microphone, a joystick, a game controller, a satellite dish, an optical reader (scanner), or the like. These and other input devices are often connected to processing unit 120 via a user input interface 160 that is coupled to the system bus, but can be connected via other interface and bus structures such as , for example, a parallel port, a game port, or a universal serial bus (USB). [0023] A monitor 191 or other type of video device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices. - rich, such as the speakers 197 and a printer 196, which can be connected via a peripheral output interface 195. [0024] Computer 110 may operate in a network environment using logical connections to one or more remote computers, such as a remote computer 180. Remote computer 180 may be a personal computer, a server, a router, a network PC, a peer-to-peer network device or other common network node, and typically includes many or all of the elements described above with respect to computer 110, although only one memory storage device 181 is illustrated in Figure 1. logical connections illustrated in Figure 1 include a local area network (LAN) 171 and a remote area network (WAN) 173, but may also include other networks. These network environments are common in offices, corporate computer networks, intranets and the Internet. [0025] When used in a LAN network environment, computer 110 is connected to LAN 171 through a network interface or adapter 170. When used in a WAN network environment, computer 110 may include a modem 172 or another means for establishing communications over the WAN 173, such as the Internet. Modem 172, which may be internal or external, may be connected to system bus 121 via user input interface 160 or by other suitable mechanism. In a networked environment, the program modules illustrated with respect to computer 110, or portions thereof, may be stored on the remote memory storage device. By way of example, and not limitation, Figure 1 illustrates the remote application programs 185 residing in memory device 181. It will be appreciated that the network connections shown are exemplary and other means for establishing a communication link between computers can be used. Data Enrichments [0026] As mentioned earlier, it is a challenge for software developers to discover and use augmented data sources. Figure 2 is a block diagram representing an exemplary environment in which aspects of the invention described herein can be implemented. The components illustrated in Figure 2 are exemplary and are not intended to be all inclusive of components that may be needed or included. In other embodiments, components described in conjunction with Figure 2 may be included in other components (shown or not shown) or placed into subcomponents, without departing from the spirit or scope of the aspects of the invention described herein. [0027] As used in this document, the term component shall be understood to include a hardware, such as all or a part of a device, a set of one or more software modules or parts thereof, a combination of one or more software modules or parts thereof and one or more devices or parts thereof, or the like. [0028] Returning to Figure 2, the environment may include an application 205, a database management system (DBMS) 206, enriched data source(s) 207, a recommendation engine 208, data stores 210 and 211, and other components (not shown). [0029] The different components can be located relatively close to each other (for example, on the same machine or on machines on the same network) or can be distributed all over the world. The various components can communicate with each other over various networks, including intra- and inter-office networks. [0030] The application 205, the DBMS system 206, the enriched data source(s) 207, and the recommendation engine 208 may comprise or reside in one or more computing devices. These devices may include, for example, personal computers, server computers, portable or laptop-type devices, multiprocessor systems, microcontroller-based systems, set-top boxes, user-programmable electronic devices, network computers, minicomputers, mainframe computers, cell phones, personal digital assistants (PDA), gaming devices, printers, devices that include a converter, media center, or other devices, in-car or embedded computing devices, other mobile devices, computing environments that include any of the above systems or devices, or the like. An exemplary device that can be configured to function as one of the above items comprises computer 110 of Figure 1. [0031] The application 205 may include a process that is capable of communicating with one or more of the other entities in Figure 2. The term "process" and its variants as used in this document may include one or more traditional processes , threads, components, libraries, objects that perform tasks, or the like. A process can be implemented on hardware, software, or a combination of hardware and software. In a modality, a process is any mechanism, however called, capable of executing or being used in the execution of an action. A process can be distributed across multiple devices or on a single device. Likewise, application 205 may have components that are distributed across one or more devices. [0032] In one embodiment, the application 205 may include a software development tool. The software development tool can implement an integrated development environment (IDE) that allows a software developer to enter and update code, debug code, create and update databases, associate code with one or more databases , compile the code, create a package, perform other actions, or similar. [0033] Data in a data store 210 can be accessed through the DBMS system 206. A DBMS system can comprise one or more programs that control the organization, storage, management and retrieval of data from a database. A DBMS system can receive data access requests to a database and can perform the operations necessary to provide this access. The term "access" as used herein may include reading data, writing data, deleting data, updating data, a combination including two or more of the above, or the like. [0034] A database stored in the data store 210 may comprise a relational database, an object-oriented database, a hierarchical database, a network database, other types of database, or some combination or extension of the above, or the like. Data stored in a database can be organized into tables, records, objects, other data structures, or the like. Data stored in a database can be stored in dedicated database files, dedicated hard disk partitions, HTML files, XML files, spreadsheets, flat files, document files, configuration files , in other files, or similar. A database can reference a dataset that is read-only to the database, or it can have the ability to read or write to the dataset. In describing aspects of the invention described herein, for purposes of simplification, terminology associated with relational databases is sometimes used in this document. Although relational database terminology is sometimes used herein, the teachings of the present invention can also be applied to other types of databases, including those mentioned above. [0036] The enriched data source(s) 207 may include any entity that is capable of providing data. For example, the enriched data sources 207 may include a service that receives data (eg, a postal code) and provides data (eg, weather information) in response to it. As another example, enriched data sources 207 may include a service that provides actual or delayed stock prices. Each enriched data source can be implemented through a process run by one or more computers. [0037] A database stored in the data store 210 can be enriched by the enriched data sources 207. The DBMS system 206 can obtain data from the enriched data source 207 and make the data appear (for example, in the application 205) as they are produced from a database managed by the DBMS 206 system. Data obtained from the enriched data sources 207 is sometimes referred to in this document as data enrichments. For example, the DBMS system 206 can use the postal code information found in the database to obtain weather information from an enriched data source. Weather information can be accessed through one or more columns of a table exposed by the DBMS 206 system. [0038] The DBMS 206 system can store information indicating the data enrichments that must be provided with the data store database 210. In the provision of the database data, the DBMS system 206 can also provide the enrichments of Dice. [0039] In one embodiment, the recommendation engine 208 may provide data enrichment recommendations to the DBMS system 206, which may then provide these recommendations to the application 205. In another embodiment, the recommendation engine 208 may provide data enrichment recommendations directly to the application 205. The recommendation may include a name or other identifier of a recommendation, an input data type necessary for the data enrichment associated with the recommendation, and an output data type provided by the data enrichment. [0040] The 208 recommendation engine can determine these recommendations in a variety of ways. Some of these ways include, for example: 1. Dynamic analysis. The DBMS 206 system can collect statistical information about the queries that are executed by the DBMS 206 system. This information can be provided to the recommendation engine 208, which can use the information to suggest new enrichments and data sources. For example, when a query uses a COMPANYFINANCIAL enrichment, the 208 recommendation engine might also recommend a COMPANYNEWS enrichment. This recommendation can be provided as both enrichments use a company name as input. [0041] In order to determine an enrichment through a dynamic analysis, the recommendation engine 208 can use a data structure that maps between enrichments. For example, the recommendation engine 208 may maintain or be provided with a table that includes rows, each row including a first enrichment and a second enrichment field. The second enrichment is the data enrichment that should be recommended based on the first enrichment. Through the use of zero or more rows, this table can be used in order to map a first enrichment of zero or more other enrichments that might be recommended based on the first enrichment. [0042] Statistics, such as query time, can be used to recommend data sources that are indexed differently from the data source currently being used. For example, a stock exchange quote data source may be able to provide updated stock prices using the company name or a stock symbol (eg MSFT). When the company name is provided, the stock exchange quote data source may need to look up a stock symbol for which the company is known in the stock market. The data source may then use this stock symbol in order to obtain the quote data. [0043] Instead of using the above methodology to obtain quote data, a data source that receives the stock symbol will only be able to obtain the quote data directly and, thus, be able to obtain the data more quickly from the that a data source that has to translate from the company name to a quote name. When a company table has a stock symbol field, but is using a company name data enrichment in order to obtain quote data, the 208 recommendation engine may recommend that data enrichment using the field of stock symbol is used in place of the other. Alternatively, the recommendation engine 208 can recommend a stock symbol entity that includes the stock symbol for each company in the company table and can then recommend enrichments based on the stock symbol entity. 2. Static Analysis. Data that is stored in a database has structural metadata relating to database objects that include tables, columns, procedures, an extensible markup language (XML), or the like. This structural metadata can be examined to determine the type of data that is stored and processed by the database. Some examples of structural metadata include table names, column names, stored procedure names, column data types, other object names, or the like. [0044] For example, a table with the company name may indicate that the table has information about the company. Within the company name table, a column with the given name can indicate the company name. This metadata can be used to determine if the column with names within the company table has the name of a company. This can then be used to provide enrichment recommendations for companies, such as a COMPANYFINANCIAL enrichment, a COMPANYNEWS enrichment, a COMPANYSOCIALNETWORKS enrichment, and other company enrichments. [0045] In order to facilitate the determination of data enrichment for a static analysis, a data structure can be used that maps from an identifier (eg a name) to one or more enrichments associated with the name. For example, the recommendation engine 208 may maintain or be provided with a table that includes rows, each row including one or more metadata attribute(s) fields (eg, table name, column, name, type of data) and a data enrichment that should be recommended based on the metadata attribute(s). Through the use of zero or more rows, this table can be used in the sense of mapping a metadata attribute (or attributes) to zero or more other enrichments that can be recommended based on the metadata attributes. [0046] As an example of a data enrichment that might be recommended based on a column data type, the metadata can indicate whether a column uses a geometry data type. In response, the recommendation engine 208 may recommend a location entity and enrichments that are associated with the location entity (eg, weather, crime rate, population density, demographics, housing statistics, etc.) . [0047] A column data type can also be determined by analyzing the data from the database itself. For example, by analyzing the columns of a table, the recommendation engine 208 may be able to determine whether the columns represent an address. This can be done, for example, when trying to search for an address using column data. Once the recommendation engine 208 determines which columns represent an address, the recommendation engine 208 may use the mapping techniques mentioned herein to recommend data enrichments based on the address. [0048] Likewise, the static analysis of data within the database may be able to provide additional information relating to the data contained in the database. This information can also be used to recommend data enrichment. 3. Directive. Policy-based recommendations can be made. These directives can be defined by application 205 or otherwise. A policy can be thought of as a rule that has one or more conditions that limit a recommendation based on the assessment of the condition(s). For example, a policy might be based on the cost of a transaction, classification of a data source, a service license agreement (SLA), whether the data is allowed to be persisted in the database, or other conditions . For example, a policy might indicate that as long as the price for data enrichment is less than a certain amount, a recommendation for data enrichment is allowed. 4. A directory. Available data enrichments can be searched. For example, the recommendation engine 208 can provide a list of data enrichment and its corresponding data sources in a table that a software developer or the like can query. The table can indicate the type of data accepted as input or produced as output. The table may also include licensing restrictions, costs (if any), other data on data enrichments, or the like. [0049] The data store 211 is a store that stores the data used in the recommendations. Data may include, for example, mapping data, a directory of available data enrichments, pricing, performance, and reliability data, license agreements relating to data sources, or the like. [0050] Data stores 210 - 211 can be implemented using any storage medium capable of storing data. A store can include volatile memory (for example, a cache) or non-volatile memory (for example, a persistent store). The store can be implemented using a file system, a database, a volatile memory such as RAM, another storage, some combination of the above, or the like, and can be distributed across multiple devices. [0051] The term "data" is to be understood broadly to include anything that can be represented by one or more computer storage elements. Logically, data can be represented as a series of 1's and 0's in volatile or nonvolatile memory. On computers that have a non-binary storage medium, data can be represented according to the capacities of the storage medium. Data can be organized into different types of data structures, including simple data types such as numbers, letters, or related data types, hierarchical, linked or other related data types, data structures that include various other data structures. simple data types or data types, or the like. [0052] Figures 3 and 4 are flowcharts that represent, in general, exemplary actions that may occur in accordance with the aspects of the invention described in this document. For the sake of simplicity of explanation, the methodology described with respect to Figures 3 and 4 is illustrated and described as a series of actions. It should be understood and appreciated that aspects of the invention described herein are not limited to the actions illustrated and/or the order of those actions. In one modality, actions occur in an order as described below. In other modalities, however, actions may occur in parallel, in a different order, and/or with other actions not presented or described in this document. Furthermore, not all actions illustrated may be necessary to implement the methodology in accordance with the aspects of the invention described herein. Furthermore, those skilled in the art will understand and appreciate that the methodology can alternatively be represented as a series of interrelated states through a state diagram or as events. [0053] As for Figure 3, in block 305, the actions start. In block 310, a request is received to provide data enrichment recommendations to a database. For example, with reference to Figure 2, application 205, system DBMS 206, or some other component may request recommendation engine 208 to provide data enrichment recommendations for a database managed by the DBMS system. [0054] In block 315, a metadata analysis can be performed. For example, with reference to Figure 2, the recommendation engine 208 can use metadata relating to a database provided by the DBMS system 206 together with mapping information in data store 211 to determine one or more recommendations to offer. . In addition, the recommendation engine 208 can assess policy conditions in order to restrict recommendations to those that do not violate the policy. [0055] Although, in one modality, the analysis of metadata can be done after receiving the request in order to provide recommendations, in another modality, this analysis can be performed before receiving the request. In one modality, analytics is an ongoing process that continues to update recommendations as metadata related to changes in a database. [0056] In an implementation, the analysis of metadata may include the following exemplary actions: 1. Obtaining metadata associated with the database. This may involve requesting data from the DBMS system, receiving (without requesting) data from the DBMS system, or some other mechanism. 2. Discovery of an identifier within the metadata. This may involve discovering the name(s) of one or more tables, columns, stored procedures, or other database objects. 3. Mapping the identifier to a data enrichment using a data structure that associates the identifier with the data enrichment. This may involve the use of a table or other data structure that includes one or more identifiers as a key way of identifying one or more other identifiers. For example, a "company" name in a table or column can be used to find associated enrichments in the data structure. As another example, the name of "company" in a table together with the name of "stock symbol" in a column of the table can be used together in order to find the stock quote enrichment. [0057] In block 320, a dynamic analysis can be performed. For example, referring to Figure 2, the recommendation engine 208 can analyze one or more queries issued to a database in order to determine recommendations for data enrichments. For example, when a query indicates a data enrichment, this data enrichment can be used to identify other data enrichments using a mapping data structure or similar. In addition, the recommendation engine 208 can assess the conditions of the directives in order to restrict the recommendations to those that do not violate the directives. [0058] In an implementation, dynamic analysis can include the analysis of queries issued to the database. In this implementation, the determination of a recommendation can be performed through the following exemplary actions: 1. Obtaining a first identifier of a first data enrichment referenced by at least one query. For example, when the query includes an identifier (eg a name) of a data enrichment ("COMPANYFINANCIAL"), the identifier can be obtained. 2. Mapping the first identifier to a second identifier of a second data enrichment using a data structure that associates the data enrichment identifiers. [0059] Another exemplary dynamic analysis may involve the following exemplary actions: 1. Comparison of the query times of a first query and a second query that obtain an identical type (eg, share price) of enrichment data from two different data sources; 2. Selection of a faster query from the first query and the second query depending on which among the first query and the second query has the lowest latency in getting the output data; 3. Determining a data enrichment identifier associated with the fastest query. [0060] Data enrichment can, in this case, be recommended to improve performance, for example. [0061] Although in one modality, the analysis of queries can be performed after receiving the request in order to provide recommendations, in another modality, the analysis can be performed before receiving the request. In one modality, analytics is an ongoing process that continues to update recommendations as database queries are received. [0062] In block 325, recommendations are provided based on the analysis of the metadata. For example, with reference to Figure 2, the recommendation engine 208 can provide data enrichment recommendations for the DBMS system 206, for the application 205, or for some other component. [0063] In block 330, recommendations are provided based on the dynamic analysis. For example, with reference to Figure 2, the recommendation engine 208 can provide data enrichment recommendations for the DBMS system 206, for the application 205, or for some other component. [0064] Recommendations based on metadata and recommendations based on dynamic analysis may be provided together or separately, without departing from the spirit or scope of application of the aspects of the invention described in this document. In some cases, there may only be recommendations based on dynamic analysis. In other cases, there may only be recommendations based on static analysis. [0065] In block 335, other actions, if any, can be performed. Other actions might include, for example, providing a searchable directory that identifies data enrichments and data enrichments corresponding to data sources. [0066] As for Figure 4, in block 405, the actions start. At block 410, a data enrichment recommendation is received. The recommendation is based on one or more database metadata analysis and the analysis of queries issued to a DBMS system that provides access to the database. For example, with reference to Figure 2, the DBMS system 206 can receive a recommendation for a COMPANYNEWS enrichment from the recommendation engine 208. Then, the DBMS system 206 can provide the recommendation to the application 205. In another embodiment, the application 205 can receive the recommendation directly from the recommendation engine 208. [0067] In block 415, an indication of the recommendation can be provided through a graphical interface. For example, with reference to Figure 2, application 205 can provide a software developer, a user, or the like, an indication of the recommendation by displaying the recommendation on a computer monitor, along with user interface elements that allow the software developer to indicate whether the software developer wants to use data enrichment. [0068] In block 420, the software developer is allowed to indicate whether the software developer wants to use data enrichment. For example, with reference to Figure 2, the software developer can indicate to the application 205 whether the recommended data enrichment should be used via the displayed interface elements. In response, the application 205 can inform the DBMS system 206 whether the recommended data enrichment should be used. [0069] In block 425, other actions, if any, can be performed. For example, instead of receiving a set of recommendations, a directory of data enrichments, their associated data sources, and other information (eg, cost, speed, reliability, or the like) can be received. This directory or at least a part of it can be displayed through a graphical interface. A software developer can also issue queries to this directory in order to look for the enrichments that the developer is interested in using. [0070] As another example, a software developer may be able to define (for example, through a graphical interface) one or more directives that must be met in conjunction with the provision of a recommendation. These policies can then be provided to a recommendation engine for use in recommended data enrichments that do not violate the policies. [0071] As can be seen from the detailed description above, aspects relating to recommended data enrichments have been described. While aspects of the invention described herein are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described in detail above. It should be understood, however, that there is no intention to limit the aspects of the matter claimed to the specific forms presented, but rather, on the contrary, the intention is to cover all modifications, alternative constructions and equivalents that fall within the spirit and scope of application of the various aspects of the invention described herein.
权利要求:
Claims (20) [0001] 1. Method for recommending data enrichments for a database in a computer system, the computer system including a processor, the method characterized in that it comprises the steps of: receiving a request to provide data enrichment recommendations to the database; analyze metadata for the database, the metadata defining the structure of the database; recommend a first data enrichment for the database based on metadata analysis, the first data enrichment to supplement the database; suggesting a second data enrichment for the database based on a similarity between the first data enrichment and the second data enrichment, the second data enrichment to supplement the database; and identifying a data source capable of providing the second data enrichment through the steps of: comparing a characteristic of a first query and a second query that obtains enrichment data for the second data enrichment from two enrichment data sources many different; select an appropriate query based on comparing the characteristic of the first query and the second query; and determining an identifier for the enrichment data source associated with the appropriate query. [0002] 2. Method according to claim 1, characterized in that it further comprises identifying a data source capable of providing the first data enrichment through the steps of: finding an identifier within the metadata; and mapping the identifier to the data source using a data structure that associates the identifier with the first data enrichment. [0003] 3. Method according to claim 2, characterized in that finding an identifier within the metadata comprises finding a column name within the metadata and wherein mapping the identifier to the first enrichment data source comprises using a table which associates identifiers with data enrichments. [0004] 4. Method according to claim 2, characterized in that finding an identifier within the metadata comprises finding a table name within the metadata and in which mapping the identifier to the first enrichment data source comprises using a table that associates identifiers with data enrichments. [0005] 5. Method according to claim 2, characterized in that finding an identifier within the metadata comprises finding a procedure name stored within the metadata and in which mapping the identifier to the first enrichment data source comprises using a table which associates identifiers with data enrichments. [0006] 6. Method according to claim 2, characterized in that finding an identifier within the metadata comprises finding a data type of a column of the database and in which mapping the identifier to the first source of enrichment data comprises search a table that associates data types with enrichment data. [0007] 7. Method according to claim 1, characterized in that recommending the first data enrichment comprises sending a name of the first data enrichment, as well as an input data type for the first data enrichment and a type of output data for the first data enrichment, the name, the input data type, and the output data type for use in software development to reference the data enrichment through the database. [0008] 8. Method according to claim 1, characterized in that selecting an appropriate query based on the comparison comprises selecting the quick query depending on which of the first query and the second query have the lowest latency. [0009] 9. Method according to claim 1, characterized in that it further comprises displaying an indication of the first data enrichment in a graphical interface. [0010] 10. Method according to claim 1, characterized in that comparing a characteristic of a first query and a second query that obtains enrichment data for the second data enrichment from two different enrichment data sources comprises comparing query times of the first query and the second query; and wherein selecting a suitable query based on comparing the characteristic of the first query and the second query comprises selecting the fastest query of the first query and the second query based on comparing query times. [0011] 11. Method according to claim 10, characterized in that selecting the fastest query of the first query and the second query based on the comparison of query times comprises selecting the fastest query of the first query and the second query depending on which of the first query and the second query has the lowest latency in getting enrichment data for the second data enrichment. [0012] 12. System in a computing environment characterized by the fact that it comprises: a processor; system memory; a database storing data and the metadata in relation to the data, the metadata defining the structure of the database; one or more computer storage devices having stored thereon computer-executable instructions representing a recommendation engine, the recommendation engine configured to: receive a request to provide data enrichment recommendations to the database; analyze the metadata; recommend a first data enrichment for the database based on metadata analysis, the first data enrichment to supplement the database; suggesting a second data enrichment for the database based on a similarity between the first data enrichment and the second data enrichment to supplement the database; and identify a data source capable of providing the second data enrichment through the steps of: selecting a faster query from a first query and a second query that obtains enrichment data for the second data enrichment from different data sources based on query times of the first query and the second query; and determining an identifier for the data source associated with the fastest query. [0013] 13. System according to claim 12, characterized in that the database management system (DBMS), the database, and the recommendation engine are hosted on one or more servers located remotely from the software component, and where the software component is used by a software programmer to augment the database. [0014] 14. System according to claim 12, characterized in that the DBMS, the database, the recommendation engine and the software component are hosted on a computer, and in which the software component is an application. [0015] 15. System according to claim 12, characterized in that the recommendation engine being configured to recommend the first data enrichment comprises the recommendation engine being configured to: find an identifier within the metadata; and mapping the identifier to the first data enrichment using a data structure that associates the identifier with the first data enrichment. [0016] 16. System according to claim 12, characterized in that the recommendation engine being configured to select a faster query from a first query and a second query comprises the recommendation engine being configured to select the query fast depending on which of the first query and the second query has the lowest latency. [0017] 17. A computer storage medium having computer executable instructions, characterized in that when executed, it performs the steps of: receiving a request to provide data enrichment recommendations for the database; analyze metadata for the database, the metadata defining the structure of the database; recommend a first data enrichment for the database based on metadata analysis, the first data enrichment to supplement the database; suggesting a second data enrichment for the database based on a similarity between the first data enrichment and the second data enrichment to supplement the database; and identify a data source capable of providing the second data enrichment through the steps of: selecting a query with the fastest query time from between a first query and a second query that accesses the second data enrichment from different sources of data; and determining an identifier for the data source associated with the query. [0018] 18. Computer storage medium according to claim 17, characterized in that it further comprises receiving a data structure that associates recommendations with enrichment data sources and displaying at least a portion of the recommendations and their data sources associated enrichment programs through a graphical interface. [0019] 19. Computer storage medium according to claim 17, characterized in that it further comprises providing one or more policies that are being satisfied together with the recommendation of the first data enrichment. [0020] 20. Computer storage medium according to claim 17, characterized in that selecting a query with the fastest query time among a first query and a second query comprises selecting a query with the lowest latency between the first query and the second consultation.
类似技术:
公开号 | 公开日 | 专利标题 BR112013032101B1|2021-04-20|method to recommend data enrichment for a database, system in a computational environment and storage medium per computer. US8959110B2|2015-02-17|Dynamic query for external data connections US9524302B2|2016-12-20|Distributed consistent database implementation within an object store KR20170019352A|2017-02-21|Data query method and apparatus US20150074041A1|2015-03-12|Deferring data record changes using query rewriting US20210286787A1|2021-09-16|System and method for slowly changing dimension and metadata versioning in a multidimensional database environment US8095557B2|2012-01-10|Type system for access control lists TWI428773B|2014-03-01|Apparatus and method for realizing big data into a big object and computer program product thereof Biswas et al.2015|Content level access control for openstack swift storage US20130246394A1|2013-09-19|Structured large object | data US10366081B2|2019-07-30|Declarative partitioning for data collection queries US20100318964A1|2010-12-16|Software extension analysis US10089342B2|2018-10-02|Main memory database management using page index vectors US9069884B2|2015-06-30|Processing special attributes within a file US20140379762A1|2014-12-25|Content management system US8635331B2|2014-01-21|Distributed workflow framework US10776344B2|2020-09-15|Index management in a multi-process environment US10936478B2|2021-03-02|Fast change impact analysis tool for large-scale software systems US10503923B1|2019-12-10|Centralized data store for multiple data processing environments CN112069185A|2020-12-11|Index construction method and device, electronic equipment and medium
同族专利:
公开号 | 公开日 CN103608809A|2014-02-26| WO2012173825A3|2013-03-21| KR101976220B1|2019-05-07| JP2014523013A|2014-09-08| CA2838502A1|2012-12-20| CN103608809B|2017-11-24| KR20190049924A|2019-05-09| US11093490B2|2021-08-17| KR20140041546A|2014-04-04| WO2012173825A2|2012-12-20| RU2611966C2|2017-03-01| BR112013032101A2|2016-12-13| RU2013155626A|2015-06-20| US20120323843A1|2012-12-20| US20160140170A1|2016-05-19| KR102035984B1|2019-10-23| EP2721531A4|2014-11-26| US20200042517A1|2020-02-06| MX2013014800A|2014-01-24| US9244956B2|2016-01-26| EP2721531A2|2014-04-23| AU2012271085B2|2017-01-05| US10540349B2|2020-01-21| JP5986195B2|2016-09-06|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US5960194A|1995-09-11|1999-09-28|International Business Machines Corporation|Method for generating a multi-tiered index for partitioned data| US5649181A|1993-04-16|1997-07-15|Sybase, Inc.|Method and apparatus for indexing database columns with bit vectors| US5623652A|1994-07-25|1997-04-22|Apple Computer, Inc.|Method and apparatus for searching for information in a network and for controlling the display of searchable information on display devices in the network| US5608904A|1995-02-13|1997-03-04|Hewlett-Packard Company|Method and apparatus for processing and optimizing queries having joins between structured data and text data| US5615264A|1995-06-08|1997-03-25|Wave Systems Corp.|Encrypted data package record for use in remote transaction metered data system| KR20000015870A|1996-05-23|2000-03-15|슈라이버 데이비드 엘.|Global financial services integration system and process| US5913214A|1996-05-30|1999-06-15|Massachusetts Inst Technology|Data extraction from world wide web pages| US6016348A|1996-11-27|2000-01-18|Thomson Consumer Electronics, Inc.|Decoding system and data format for processing and storing encrypted broadcast, cable or satellite video data| JP3836928B2|1997-02-26|2006-10-25|株式会社日立製作所|Database processing method| US7092914B1|1997-11-06|2006-08-15|Intertrust Technologies Corporation|Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information| JP3648051B2|1998-02-02|2005-05-18|富士通株式会社|Related information retrieval apparatus and program recording medium| US6763496B1|1999-03-31|2004-07-13|Microsoft Corporation|Method for promoting contextual information to display pages containing hyperlinks| JP2000293590A|1999-04-12|2000-10-20|Sony Corp|Information processor, information processing method and providing medium| US6343287B1|1999-05-19|2002-01-29|Sun Microsystems, Inc.|External data store link for a profile service| US7472349B1|1999-06-01|2008-12-30|Oracle International Corporation|Dynamic services infrastructure for allowing programmatic access to internet and other resources| US7007275B1|1999-10-21|2006-02-28|Unisys Corporation|Method and apparatus for automatic execution of concatenated methods across multiple heterogeneous data sources| US7124101B1|1999-11-22|2006-10-17|Accenture Llp|Asset tracking in a network-based supply chain environment| US7213005B2|1999-12-09|2007-05-01|International Business Machines Corporation|Digital content distribution using web broadcasting services| US6618822B1|2000-01-03|2003-09-09|Oracle International Corporation|Method and mechanism for relational access of recovery logs in a database system| US6957214B2|2000-06-23|2005-10-18|The Johns Hopkins University|Architecture for distributed database information access| JP3567861B2|2000-07-07|2004-09-22|日本電信電話株式会社|Information source location estimation method and apparatus, and storage medium storing information source location estimation program| JP2002149459A|2000-11-10|2002-05-24|Mitsubishi Electric Corp|Redundant database management and retrieval system| JP4543563B2|2001-02-28|2010-09-15|株式会社日立製作所|Query optimization method in integrated database system| US20040139089A1|2002-03-29|2004-07-15|Wells Ronald B.|Method and system for managing information on a network| US20030009424A1|2001-05-31|2003-01-09|Contentguard Holdings, Inc.|Method for managing access and use of resources by verifying conditions and conditions for use therewith| US7546602B2|2001-07-10|2009-06-09|Microsoft Corporation|Application program interface for network software platform| US7133862B2|2001-08-13|2006-11-07|Xerox Corporation|System with user directed enrichment and import/export control| US6928425B2|2001-08-13|2005-08-09|Xerox Corporation|System for propagating enrichment between documents| WO2003058399A2|2001-12-28|2003-07-17|Sv Trycos, Llc|Method and system for adaptive software system interface and external database synchronization| US7233939B1|2002-04-30|2007-06-19|Oracle International Corporation|Systems and methods of optimizing database queries for efficient delivery of query data subsets| US6993534B2|2002-05-08|2006-01-31|International Business Machines Corporation|Data store for knowledge-based data mining system| AU2003243635A1|2002-06-17|2003-12-31|Beingmeta, Inc.|Systems and methods for processing queries| US7493311B1|2002-08-01|2009-02-17|Microsoft Corporation|Information server and pluggable data sources| EP1403764A1|2002-09-26|2004-03-31|Sap Ag|Method and computer system for dynamic data type enrichment| ZA200302281B|2002-09-30|2003-09-29|Microsoft Corp|Accessibility system events mechanism and method.| US7849016B2|2002-12-18|2010-12-07|Vincent So|Internet-based data content rental system and method| US7177874B2|2003-01-16|2007-02-13|Jardin Cary A|System and method for generating and processing results data in a distributed system| US20040148278A1|2003-01-22|2004-07-29|Amir Milo|System and method for providing content warehouse| US7146356B2|2003-03-21|2006-12-05|International Business Machines Corporation|Real-time aggregation of unstructured data into structured data for SQL processing by a relational database engine| JP2004304304A|2003-03-28|2004-10-28|Fujitsu Ltd|Electronic signature generating method, electronic signature authenticating method, electronic signature generating request program and electronic signature authenticate request program| JP2004326250A|2003-04-22|2004-11-18|Nec Corp|Price information management server, method, and program| US20040215656A1|2003-04-25|2004-10-28|Marcus Dill|Automated data mining runs| EP1482418A1|2003-05-28|2004-12-01|Sap Ag|A data processing method and system| US7739223B2|2003-08-29|2010-06-15|Microsoft Corporation|Mapping architecture for arbitrary data models| US7594109B2|2003-12-23|2009-09-22|Hewlett-Packard Development Company, L.P.|Digital content distribution system| CN100418074C|2004-03-05|2008-09-10|菲尼萨公司|Hierarchical and byte-configurable memory in an optical transceiver| US8521687B2|2004-08-03|2013-08-27|International Business Machines Corporation|Apparatus, system, and method for selecting optimal replica sources in a grid computing environment| US7451357B2|2004-11-18|2008-11-11|International Business Machines Corporation|Apparatus and system for adjusting trace data granularity| US7427349B2|2004-12-16|2008-09-23|Chevron U.S.A. Inc.|Fuels hydrocracking and distillate feed hydrofining in a single process| US20130104251A1|2005-02-01|2013-04-25|Newsilike Media Group, Inc.|Security systems and methods for use with structured and unstructured data| US7882122B2|2005-03-18|2011-02-01|Capital Source Far East Limited|Remote access of heterogeneous data| US7716377B2|2005-05-25|2010-05-11|Harris Steven T|Clustering server providing virtual machine data sharing| JP2009504026A|2005-07-27|2009-01-29|ダグカーソンアンドアソシエーツ,インク.|Verification history data associated with digital content| US20070043667A1|2005-09-08|2007-02-22|Bahman Qawami|Method for secure storage and delivery of media content| US7668821B1|2005-11-17|2010-02-23|Amazon Technologies, Inc.|Recommendations based on item tagging activities of users| KR100656402B1|2005-11-26|2006-12-11|한국전자통신연구원|Method and apparatus for the secure digital contents distribution| US7716240B2|2005-12-29|2010-05-11|Nextlabs, Inc.|Techniques and system to deploy policies intelligently| US9277295B2|2006-06-16|2016-03-01|Cisco Technology, Inc.|Securing media content using interchangeable encryption key| US20100138652A1|2006-07-07|2010-06-03|Rotem Sela|Content control method using certificate revocation lists| US8005832B2|2006-08-29|2011-08-23|Switchbook, Inc.|Search document generation and use to provide recommendations| US20080091613A1|2006-09-28|2008-04-17|Microsoft Corporation|Rights management in a cloud| US8312036B2|2006-09-29|2012-11-13|Apple Inc.|Recommended systems| EP2092450A4|2006-10-19|2011-04-13|Taboola Com Ltd|Method and system for content composition| US20080104542A1|2006-10-27|2008-05-01|Information Builders, Inc.|Apparatus and Method for Conducting Searches with a Search Engine for Unstructured Data to Retrieve Records Enriched with Structured Data and Generate Reports Based Thereon| GB2446199A|2006-12-01|2008-08-06|David Irvine|Secure, decentralised and anonymous peer-to-peer network| US7571069B1|2006-12-22|2009-08-04|Hewlett-Packard Development Company, L.P.|Data assurance workflow derivation and execution| US20080222132A1|2007-03-07|2008-09-11|Jiangyi Pan|Personalized shopping recommendation based on search units| US20080228716A1|2007-03-13|2008-09-18|Dettinger Richard D|System and method for accessing unstructured data using a structured database query environment| US8219523B2|2007-03-23|2012-07-10|Sap Ag|Data quality enrichment integration and evaluation system| US7970943B2|2007-08-14|2011-06-28|Oracle International Corporation|Providing interoperability in software identifier standards| US8972518B2|2007-09-20|2015-03-03|Flash Networks Ltd.|Integrated data-model and flow based policy system| JP4539712B2|2007-12-03|2010-09-08|ソニー株式会社|Information processing terminal, information processing method, and program| US20110029520A1|2007-12-18|2011-02-03|Bae Systems Plc|Data curation| US7984056B1|2007-12-28|2011-07-19|Amazon Technologies, Inc.|System for facilitating discovery and management of feeds| GB2456184A|2008-01-07|2009-07-08|Cvon Innovations Ltd|System for selecting an information provider or service provider| ITTO20080434A1|2008-06-05|2009-12-06|Accenture Global Services Gmbh|DATA COLLECTION AND ANALYSIS SYSTEM FOR CONSUMER PURCHASES AND BUYERS| JP2010020524A|2008-07-10|2010-01-28|Id Solution:Kk|Dna authentication system| US7991650B2|2008-08-12|2011-08-02|Amazon Technologies, Inc.|System for obtaining recommendations from multiple recommenders| NO330101B1|2008-12-23|2011-02-21|Microsoft Int Holdings B V|Procedure for human-centric information access and presentation| US8495005B2|2009-01-14|2013-07-23|International Business Machines Corporation|Methods for matching metadata from disparate data sources| US8452794B2|2009-02-11|2013-05-28|Microsoft Corporation|Visual and textual query suggestion| EP2230612A1|2009-03-19|2010-09-22|France Telecom|Generation of recommendations for a content server| US8103681B2|2009-05-29|2012-01-24|Clear Channel Management Services, Inc.|Associating works with unique identifiers| US8122031B1|2009-06-11|2012-02-21|Google Inc.|User label and user category based content classification| WO2011004380A1|2009-07-09|2011-01-13|Xeround Systems Ltd.|Database system with query interception and redirection| US8812490B1|2009-10-30|2014-08-19|Microstrategy Incorporated|Data source joins| NO331571B1|2009-10-30|2012-01-30|Uni I Stavanger|System for protecting an encrypted information unit| KR101672454B1|2009-10-30|2016-11-04|삼성전자 주식회사|Method and apparatus for managing content service in network based on content use history| US9208230B2|2010-10-29|2015-12-08|Google Inc.|Enriching search results| US9077462B2|2010-12-21|2015-07-07|Cox Communications, Inc.|Systems and methods for measuring audience participation over a distribution network| US9147195B2|2011-06-14|2015-09-29|Microsoft Technology Licensing, Llc|Data custodian and curation system| US9122720B2|2011-06-14|2015-09-01|Microsoft Technology Licensing, Llc|Enriching database query responses using data from external data sources| JP2016511891A|2013-02-08|2016-04-21|トムソン ライセンシングThomson Licensing|Privacy against sabotage attacks on large data| US10445062B2|2016-09-15|2019-10-15|Oracle International Corporation|Techniques for dataset similarity discovery|US9147195B2|2011-06-14|2015-09-29|Microsoft Technology Licensing, Llc|Data custodian and curation system| US10629086B2|2015-06-09|2020-04-21|International Business Machines Corporation|Providing targeted, evidence-based recommendations to improve content by combining static analysis and usage analysis| US10528522B1|2016-03-17|2020-01-07|EMC IP Holding Company LLC|Metadata-based data valuation| US10838946B1|2016-03-18|2020-11-17|EMC IP Holding Company LLC|Data quality computation for use in data set valuation| US10789224B1|2016-04-22|2020-09-29|EMC IP Holding Company LLC|Data value structures| US10838965B1|2016-04-22|2020-11-17|EMC IP Holding Company LLC|Data valuation at content ingest| US10671483B1|2016-04-22|2020-06-02|EMC IP Holding Company LLC|Calculating data value via data protection analytics| US10210551B1|2016-08-15|2019-02-19|EMC IP Holding Company LLC|Calculating data relevance for valuation| CN106372133A|2016-08-19|2017-02-01|苏州七彩部落网络科技有限公司|Big data-based user behavior analysis processing method and system| US11157498B1|2016-09-26|2021-10-26|Splunk Inc.|Query generation using a dataset association record of a metadata catalog| US11238049B1|2018-04-30|2022-02-01|Splunk Inc.|Revising catalog metadata based on parsing queries| US11093564B1|2016-09-26|2021-08-17|Splunk Inc.|Identifying configuration parameters for a query using a metadata catalog| US10719480B1|2016-11-17|2020-07-21|EMC IP Holding Company LLC|Embedded data valuation and metadata binding| US10936599B2|2017-09-29|2021-03-02|Oracle International Corporation|Adaptive recommendations|
法律状态:
2017-07-25| B25A| Requested transfer of rights approved|Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US) | 2018-12-11| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2019-10-29| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]| 2021-03-16| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2021-04-20| B16A| Patent or certificate of addition of invention granted|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 05/06/2012, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US13/159,654|US9244956B2|2011-06-14|2011-06-14|Recommending data enrichments| US13/159,654|2011-06-14| PCT/US2012/040950|WO2012173825A2|2011-06-14|2012-06-05|Recommending data enrichments| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|