The present disclosure relates to data processing, and more specifically, to methods, systems and computer program products for managing structuring of large sets of unstructured data.
Searching for data and acting on the results of a search query is a common activity associated with many different types of computer applications. When a search query is submitted by the user, the user is effectively classifying the items being searched according to features and values that are important to them (and possibly to similar users). The act of searching may effectively provide a structure to otherwise unstructured data. However, such structure is transient and lost when the search session is over and information in the query string about their approach to classification may be lost. Generally, each search session starts from the same blank beginning point.
In accordance with an embodiment, a computer-implemented method for managing structuring of large sets of unstructured data is provided. The method may include receiving a search query from a user via a graphical user interface (GUI); parsing the search query to identify a data aspect and a first value; generating an aspect-value pair using the data aspect and the first value; generating a data asset by associating a type structure to the unstructured data comprising a second value, wherein the type structure comprises the data aspect and the second value; generating a set of search results using the first value, wherein the set of search results comprises at least one data asset that matches the first value; and facilitating presentation of the set of search results, wherein the set of search results corresponds to the search query and comprises the data aspect.
In another embodiment, a computer program product may include a non-transitory storage medium readable by a processing circuit and stores instructions for execution by the processing circuit for performing a method comprising receiving a search query from a user via a graphical user interface (GUI); parsing the search query to identify a data aspect and a first value; generating an aspect-value pair using the data aspect and the first value; generating a data asset by associating a type structure to the unstructured data comprising a second value, wherein the type structure comprises the data aspect and the second value; generating a set of search results using the first value, wherein the set of search results comprises at least one data asset that matches the first value; and facilitating presentation of the set of search results, wherein the set of search results corresponds to the search query and comprises the data aspect.
In another embodiment, a system may include a processor in communication with one or more types of memory, the processor configured to receive a search query from a user via a graphical user interface (GUI); parse the search query to identify a data aspect and a first value; generate an aspect-value pair using the data aspect and the first value; generate a data asset by associating a type structure to the unstructured data comprising a second value, wherein the type structure comprises the data aspect and the second value; generate a set of search results using the first value, wherein the set of search results comprises at least one data asset that matches the first value; and facilitate presentation of the set of search results, wherein the set of search results corresponds to the search query and comprises the data aspect.
The forgoing and other features, and advantages of the disclosure are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
In accordance with exemplary embodiments of the disclosure, methods, systems and computer program products for managing structuring of large sets of unstructured data. The methods and systems described herein are directed to developing a taxonomy of object structures from various operands associated with search queries, such as those that use new search terms or existing search terms organized in unique ways. Information may be used independent of searches to classify and organize objects in a meaningful way.
Many search engines allow users to enter both simple and advanced searched that may include Boolean operations, such as “equals” (comparators), “not” (negation), “or” (union), and “and” (intersection). In some embodiments, such searches may provide search results ordered using a popularity index. Data obtained from such search results are not organized in accordance to the user's world view and any structure that may be implied or inferred cannot be made available to other users.
Some search engines permit users to save searches so that they can repeat them at a later time and may permit the saved searches to be shared with others. However, saved search phrases do not organize the data so that subsequent searching is more efficient because complex search expressions are still used. Some search engines permit users to create categories and filters within categories so that searching is more efficient because the categories and filters can be used to construct complex queries, but they do not have a mechanism to extract the categories and filters from the search feature. Some search engines permit keyword metadata to be associated with items in a search set so that subsequent searches using the keywords are simpler and more likely to return these items, but such a feature does not generally permit a general type structure that can be applied to multiple items based on the act of searching itself. In one embodiment, a search engine can be integrated with an item maintenance facility, which permits a type structure, such as a schema or template, to be created and used to guide gathering the data about items to be added. The search engine can further allow the same type structure to be used to edit the data about the items in the system.
In some embodiments, the system described herein may automatically extract domain specific type information about the items being searched from the search terms supplied by users to enable navigation and selection during subsequent searches. The system may build up a knowledgebase about the items being searched, whereas existing systems require owners of the data to decide what categories a user can navigate and what features a user can select for filters. The systems and methods described herein may allow the system to structure unstructured data in various ways based on terms meaningful to one or more users and domains not limited to those few structures provided by the owners. It also allows users to “restructure” the information in a manner that is meaningful to them and immediately use that information in subsequent searches.
In some embodiments, the system and methods described herein may derive and/or extract structured object model of a universe of items being searched based on naming each of the clauses of a parsed search query with respect to its purpose in that object model. Accordingly, values may be obtained from the search query even if the search is unsuccessful because information regarding what users are searching for is obtained. In some embodiments, the object structure or ontology may be built as users perform searches. Thus, every search helps to improve the ontology and therefore improve the efficiency of generating the search strings to be used in subsequent searches, for example by guiding, creating and/or editing items in the future to ensure they include the proper data/meta-data. The systems and methods described herein are directed to learning an object structure based on search phrases and using them more efficiently to construct future search phrases. In some embodiments, rather than being stored as “search phrases”, compound clauses may be stored, which may be assembled to generate a complete search phrase.
Referring to
In exemplary embodiments, the processing system 100 includes a graphics-processing unit 130. Graphics processing unit 130 is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display. In general, graphics-processing unit 130 is very efficient at manipulating computer graphics and image processing, and has a highly parallel structure that makes it more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel.
Thus, as configured in
Referring now to
In some embodiments, the AR server 205 may be any type of user device, which may include laptops, desktop, servers, and the like. The AR server 205 may include a parser 210 and an asset management engine 215.
The parser 210 may include computer-readable instructions that in response to execution by the processor(s) 101 cause operations to be performed including receiving a search query from a user. The search query may be generated using a graphical user interface generated and presented to a user via a user device. The user device may be any type of device capable of processing data and connecting to a network. Examples of user devices may include smartphones, laptops, tablets, wearable computing devices, and the like. The parser 210 may receive a search query from one more user devices and may parse the search query into query expression clauses.
The asset management engine 215 may include computer-readable instructions that in response to execution by the processor(s) 101 cause operations to be performed including receiving a parsed search query from the parser 210. The asset management engine 215 may receive generate aspect-value pairings of asset type structures using the parsed search query. The asset management engine 215 may generate a data asset 230 by applying one or more aspect-value pairings and/or other type structure information to unstructured data. The asset management engine 215 may then transmit the generated data asset 230 to the knowledgebase datastore 220 for storage (e.g., future use by user or other users). In some embodiments, the asset management engine 215 may generate a set of search results using the aspect-value pairings, data assets 230, and other information. The asset management engine 215 may contribute to the development of the knowledgebase datastore 220 and generation of data assets 230 by processing the parsed search query and applying structure to unstructured data and/or applying additional type structure information or modifying type structure information associated with generated data assets 230.
The asset management engine 215 may communicate with a knowledgebase datastore 220 to retrieve and store data. The asset management engine 215 may also communicate with a type structure repository 240 to store and/or retrieve aspect-value pairings and other type structure data that may be associated with data assets 230. For example, the asset management engine 215 may apply the search query to unstructured data 225 and/or assets 230 to obtain a set of search results. In some embodiments, the asset management engine 215 may retrieve unstructured data 225 and generate assets 230 using one or more aspect-value pairings generated by the asset management engine 215 and/or retrieved from the type structure repository 240.
The assets 230, which may also be referred to as data assets, may be any type of data with an applied type structure. Examples of types of assets 230 may include, but are not limited to, tools, best practices, methods, examples, actors, and problems. Tools may be a type of asset 230 that are automated and have well defined steps in a process that is otherwise tedious and error prone to do manually. Best practices may be a type of asset 230 that includes documentation that describes when alternative approaches to solve a problem best apply. Methods may be a type of asset 230 that include an end-to-end process with milestones, deliverables, roles, and responsibilities that can be managed. Examples may be a type of asset 230 that include proven deployments of solutions and lessons learned, which may include sample artifacts as starting points. Actors may be a type of asset 230 that include individuals or teams of experts on a given task or technology that can help develop and/or deploy a solution. Problems may be a type of asset 230 that includes a clear description of goals and constraints, including how to measure that a task is complete.
In some embodiments, the asset management engine 215 may associate a name with each clause of the query expression, which may be persisted in a type structure repository 240 and associated with the search context. The asset management engine 215 may associate each Boolean operator use in a given query expression clause with a different aspect of a type structure that describes the items in the search. For example, a constant (e.g., string of characters or numbers) may represent a specific value of interest to the user. Naming a constant may allow many different domain specific values to be associated with the same canonical form and thus get a list of acceptable synonyms they could use in future queries. For example, by naming “International Business Machines” as “IBM”, the search may allow either term to be used interchangeably for the value, as well as enable other synonyms such as “Big Blue” to be added later.
A comparator (e.g., contains, starts with, ends with, equal to, greater than or less than a specified value) may represent a specific feature of interest. Naming a comparator-clause may allow the users to decide which attributes (aspects) of the items they care about and allows other values of interest as to be associated with this attribute. Thus users can either select values from a list or add new ones in subsequent queries. For example, associating “Company” with the “contains” expression allows other values such as “Microsoft” to be added over time as possible choices for the comparator.
AND (e.g. intersection) may represent a type, where the operands represent the properties of the type. Naming an and-clause may allow the users to decide which types they care about searching and allow other attributes specified to be associated with the type. Thus, the user can get a list of attributes from which they might select in future queries. For example, associating “Product” with the selection of “Company:Company A”, “Product Name:XYZ” and “Version:8.5.5” starts creating a Product record structure consisting of the attributes Company, Product and Version to which other interesting attributes like “Supported Operating Systems” could be added in the future.
OR (e.g., union) may represent a category (or subset), where the operands represent the members of the subset. Naming an or-clause may allow the users to create taxonomies that divide large sets of values into manageable sets that can be navigated in future queries. For example, associating “Smarter Process Suite” with the union of “Product Name:BPM” and “Product Name:ODM” may allow these values to be specified together through a simple selection of the named union rather than having to find and select each value individually. Since the Comparators are referenced rather than contained in the named union, a given named comparator can appear in multiple categories.
NOT (e.g., negation) may represent those objects not matching the associated expression. For example, sometimes a user knows what they do not want rather than what they want as a filter. Giving that clause a name establishes an antonym in the type structure that can be very useful in subsequent searches. As another example, some users may be interested in exploring previously unexplored items in the set, and may name the not-clause associated with a previously defined query as “Other.” As the original query gets modified to include more and more items, the “Other” set will shrink.
In some embodiments, the asset management engine 215 may facilitate the presentation of the result of the search query submitted but also the type structure that results from the query where elements are selected so that the query can be easily modified. The methods and systems described herein may be recursively applied to every element in the type structure, such as nested type structures, and taxonomies and ontologies may emerge from users searching the data that will enable even the most complex searches to be specified through navigation and selection.
In some embodiments, the system may include a combination of a natural language search facility with the navigation provided by the type structure, typically used when the number of values in a given aspect is large. In other embodiments, a currently selected taxonomy may be used as a context to simplify the text based query since it need not repeat the clauses associated with the selected aspects and values. The text may be parsed and appended to the associated query and thus extend the taxonomy.
In some embodiments, the system may include an EBI server 235. The EBI server 235 may communicate with the knowledgebase datastore 220. The EBI server 235 may analyze data assets in the context of user engagements and may develop actionable recommendations based on user experience information associated with the data assets 230 and obtained by the system 200. The EBI server 235 may obtain aspect-value pairings and other type structure information from the type structure repository 240 to use in evaluating data assets 230 that may be obtained from the knowledgebase datastore. By providing continuous evaluation of data assets 230 and actionable recommendations, the EBI server 235 enables the knowledgebase datastore 220 to maintain a dynamically evolving and updated ecosystem of data assets 230 available to all users of the system 200. In these embodiments, the type structure may be considered an asset as well, and thus improved based on continuous evaluation of the aspects, values and categories associated with the structure.
The data asset group 355 represents a group of data assets 230 that contain data value “Company A” 340 for the “Company” data aspect 330. The data asset group 360 represents a group of data assets 230 that do not contain data value “Company A” 340 for the “Company” data aspect 330.
Subsequent searches can immediately use type structure to make specifying queries easier and more meaningful. For example, the user added a new attribute of interest “Product” with a value of interest “ABC” that was stored prior to executing the extended query. In this embodiment, the default operation associated with two comparators at the same level is “and”, and so returned the intersection of the two result sets, which the user hoped will have the effect of filtering the result set to a more manageable number:
This corresponds to the universe of data assets being further organized into different data asset groups. The data asset group 425 represents a group of data assets 230 that contain data value “Company A” 410 for the “Company” data aspect 405 and data value “ABC” 420 for the “Product” 415 data aspect. The data asset group 430 represents a group of data assets 230 that do not contain data value “Company A” 410 for the “Company” data aspect 405 but does contain the data value “ABC” 420 for the “Product” data aspect 415. The data asset group 435 represents a group of data assets 230 that do contain data value “Company A” 410 for the “Company” data aspect 405 but does not contain the data value “ABC” 420 for the “Product” data aspect 415. The data asset group 440 represents a group of data assets 230 that do not contain data value “Company A” 410 for the “Company” data aspect 405 and also do not contain the data value “ABC” 420 for the “Product” data aspect 415.
The data asset group 530 represents a group of data assets 230 that contain data value “Company A” for the “Company” data aspect 505 and data value “ABC” for the data aspect “Product” 515. The data asset group 535 represents a group of data assets 230 that do not contain data value “Company A” for the “Company” data aspect 505 but contains the data value “ABC” for the data aspect “Product” 515.
The data asset group 540 represents a group of data assets 230 that contain data value “Company A” for the “Company” data aspect 505 and data value “XYZ” for the data aspect “Product” 515. The data asset group 545 represents a group of data assets 230 that do not contain data value “Company A” for the “Company” data aspect 505 but contain the data value “XYZ” for the data aspect “Product” 515.
The data asset group 550 represents a group of data assets 230 that contain data value “Company A” for the “Company” data aspect 505 and data value a data value that is not “ABC” or “XYZ” for the data aspect “Product” 515. The data asset group 555 represents a group of data assets 230 that do not contain data value “Company A” for the “Company” data aspect 505 and also do not contain the data values “ABC” or “XYZ” for the data aspect “Product” 515.
In some embodiments, different visual indicators may be used to indicate the type of Boolean operator to be used in generating a search query. For example, the checkmark 605 next to the IBM value may indicate to use an “AND” boolean operator, whereas the circles 610, 615 indicated next to “BPM” and “ODM” respectively, may indicate to use the “OR” boolean operator.
In some embodiments, a user may add additional values to search for, such as in the text box 620 where “Smarter Process” may have been added by a user in GUI 600. In other embodiments, text box 620 may be used to name the two values being “or'ed” and thus create a new subcategory 635. In one embodiment, the user can create the subcategory by adding the additional names for an object through a pop up menu associated with the object.
In some embodiments, aspect-value pairs as well as any other type of type structure information generated, obtained, and/or managed by the asset management engine 215 may themselves be treated as objects, thus allowing restructuring of the information and creation of different or additional data aspects. Based on information obtained from different users and/or different search queries, the asset management engine 215 may generate an updated GUI 650 upon determining that the Product ID data aspect 630 was found to be a combination of data aspects Company, Product, and Version. Accordingly, the updated GUI 650 reflects the reorganization of data aspects under Product ID 630. Additionally, the asset management engine 215 may determine, based on previously conducted searches, that BPM and ODM are subcomponents of a larger product that is referred to as “Smarter Process” 635, reflected in the organization of the data aspects under the “Smarter Process” 635 GUI label. In one embodiment, a pop up menu could be invoked after selecting the Company and Product aspects to combine them into a single higher level structure named Product Id.
Now referring to
In some embodiments, the GUI may include different text fields, enabling a user to specify one or more aspects (e.g., categories, classifications, etc.) to associate with data and/or one or more values of aspects associated with the data to search for. In some embodiments, the GUI may have different visual indicators that represent different Boolean operands to be used when constructing a search query based on the information provided by the user. The GUI enables users of different searching skill and experience to obtain similar results by removing the skill required to create and submit complex search queries. Rather, the GUI provides users the ability to specify specific aspects and/or values to search for and to specify the type of Boolean operand to use. Information provided via the GUI may be used to generate a search query (e.g., by a client agent or other component executing on a device, such as a user device, utilized by the user) and transmit the search query to an AR server 205. Different visual indicators may be used to indicate different Boolean operators, such as AND, OR, NOT, XOR, etc. Examples of different visual indicators may be shapes, colors, text, size, icons, or the like.
At block 710, the search query may be parsed. In some embodiments, the parser 210 may receive a search query from a user device. In some embodiments, the search query may have been generated using information provided via a GUI. The parser 210 may parse the search query into query expression clauses. In some embodiments, the parser 210 may use any known techniques to parse the search query. In some embodiments, the parser 210 may parse the search query and identify one or more data aspects and/or one or more values of data aspects. The parser 210 may transmit the parsed query expression clauses, data aspects, and/or values to an asset management engine 215.
At block 715, an aspect-value pair of asset type structure may be generated. The asset management engine 215 may receive the data from the parser 210 and analyze the data. In some embodiments, the asset management engine 215 may determine that at least a portion of the received data is a data aspect and/or value of a data aspect. In some embodiments, the asset management engine 215 may analyze the data using one or more rules. In some embodiments, the asset management engine 215 may analyze the data using machine learning techniques. In some embodiments, the asset management engine 215 may determine that the received data is a data aspect and/or value of a data aspect based on metadata associated with the received data. The metadata may have been associated with the data when the search query was generated. In some embodiments, the metadata may have been associated with the data when the parser 210 parsed the search query. The asset management engine 215 may determine, based on the information received from the parser 210, that a data aspect and an identified value should be associated into an aspect-value pairing. In some embodiments, the asset management engine 215 may transmit the generated aspect-value pairing and/or any other type structure information generated or obtained by the asset management engine 215 to the type structure repository 240. In some embodiments, the aspect-value pairing may be stored in a data structure, such as a table, in the type structure repository 240. In some embodiments, the GUI may request that the user associate a name with the aspect or value when the aspect name cannot be parsed from search string.
At block 720, a data asset 230 may be generated. In some embodiments, the asset management engine 215 may generate a data asset 230 using the information obtained from the analyzed parsed search query. In some embodiments, the asset management engine 215 may generate a data asset 230 from unstructured data 225 by associating a type structure (e.g., data aspect) to the unstructured data 225 and linking a value of the unstructured data 225 to the data aspect obtained from the analyzed and parsed search query. A data aspect may be a category or classification associated with a data asset 230. In some embodiments, a data asset 230 may be associated with multiple data aspects, which may each be associated with one or more values. Data assets 230 may be categorized into types, as discussed in relation to
At block 725 a set of search results may be generated. In some embodiments, the asset management engine 215 may generate a set of search results using a value obtained from the analyzed and parsed search query, by comparing the value from the search query to values of the data aspects of the data assets 230. In some embodiments, the asset management engine 215 may facilitate presentation of the set of results, if there are any, to the user. The set of search results may correspond to the search query and comprise data assets that have matching values for the identified data aspects.
In some embodiments, the method 700 is recursive, such that the method 700 may proceed back to block 705, where the asset management engine 215 may communicate with the user device operated by the user to generate an updated GUI using, for example the aspect-value pair from block 715 and facilitating presentation of the update GUI to the user. By incorporating the previously generated aspect-value pair in the updated GUI, the user is able to take advantage of previously generated information, whether the information was generated by the user or another user, thus increasing the efficiency of searching, rather than having to start over. The system 200 may now take advantage of previously generated knowledge by using known data aspects to more efficiently identify matching data assets, rather than having to search the entire universe of data.
A user may provide additional information via the updated GUI. The user device may generate a second search query using the information obtained from the updated GUI and may transmit the second search query to the AR server 205. The method 700 may proceed again through blocks 705-725. In some embodiments, the subsequent search queries may only specify a data aspect and/or a data value. Any information provided by the user via the search query may be parsed and analyzed and applied to data assets to build up the knowledgebase of data assets. Additionally, the parsed and analyzed data may be used to conduct a search on data to produce a set of search results.
Additionally, as discuss with regards to
The present disclosure may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.