In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
Reference to a computer readable medium may take any form capable of generating a signal, causing a signal to be generated, or causing execution of a program of machine-readable instructions on a digital processing apparatus. A computer readable medium may be embodied by a transmission line, a compact disk, digital-video disk, a magnetic tape, a Bernoulli drive, a magnetic disk, a punch card, flash memory, integrated circuits, or other digital processing apparatus memory device.
Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
The illustrated taxonomic element subtraction system 100 also includes a listing apparatus 110, and a data storage device 120. One example of the listing apparatus 110 is provided and described in more detail with reference to
In one embodiment the listing apparatus 110 is coupled to the data storage 120 where it can create, access, store, and/or modify taxonomic data structures, lists of objects, and any other data. The data structure 102 may be stored in the data storage device 120, retrieved from the data storage device 120 and copied into separate storage, or retrieved and stored from one or more separate storage devices. A data storage device may be any type of data storage or memory device, including electrical, magnetic, or optical storage.
In one embodiment, the identification module 202 identifies a set of objects from the data structure 102. Alternatively, the identification module 202 may identify two separate sets of objects from the data structure 102, a first set and a second set. The second set may be a subset of the first set, may include a subset of the first set, or may be disjoint from the first set.
In a further embodiment, the identification module 202 may identify a first set of objects by first identifying one or more objects, and then adding the objects and all descendants of the objects to the first set. The identification module 202 may identify the second set of objects by first identifying one or more objects, and then adding the objects, all ancestors of the objects, and all descendants of the objects to the second set. The second set may be a subset of the first set, may include a subset of the first set, or may be disjoint from the first set.
In one embodiment, the subtraction module 204 subtracts a second set of objects from a first set of objects. In a further embodiment, the first and second sets of objects are the first and second sets of objects identified by the identification module 202. In another embodiment the first set of objects has a known positive relationship with a separate object not included in the data structure 102, and the second set of objects has a known negative relationship with the same separate object.
In one embodiment, the minimization module 206 minimizes a set of objects. In another embodiment the minimization module 206 minimizes a set of objects by removing a child object from the set when a parent object of the child object is also a member of the set. In a further embodiment the minimization module 206 minimizes the set of objects created by the subtraction module 204.
In one embodiment, the listing module 208 creates a list of objects that are members of a specific set. The list may then be stored in the data storage device 120. The list may be stored for use by a database, word-processing, spreadsheet, or internet application, or for use by any other module or application.
The schematic flow chart diagrams that follow are generally set forth as logical flow chart diagrams. As such, the depicted order and labeled steps are indicative of one embodiment of the presented method. Other steps and methods may be conceived that are equivalent in function, logic, or effect to one or more steps, or portions thereof, of the illustrated method. Additionally, the format and symbols employed are provided to explain the logical steps of the method and are understood not to limit the scope of the method. Although various arrow types and line types may be employed in the flow chart diagrams, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.
The identification module 202 identifies 302 a first object in the taxonomy 102. In one embodiment the first object has a known positive relationship with a separate object not necessarily included in the taxonomy 102. The identification module 202 creates 304 a first set, consisting of the first object and each descendant of the first object. The identification module 202 identifies 306 a second object from the taxonomy 102. In one embodiment the second object has a known negative relationship with the separate object not necessarily included in the taxonomy 102. The identification module 202 creates 308 a second set, consisting of the second object, each ancestor of the second object, and each descendant of the second object. In another embodiment, the first and second objects may be multiple objects with a similar relationship to the separate object not necessarily included in the taxonomy 102. In a further embodiment, steps 302 and 304 are performed in parallel with steps 306 and 308.
The subtraction module 204 subtracts 310 the second set from the first set to create a third set. If the first and second sets were disjoint, the third set will be identical to the first set. If the first and second sets were not disjoint, the third set will be a subset of the first set. In an embodiment where the first set has a known positive relationship with a separate object not necessarily included in the taxonomy 102, and the second set has a known negative relationship with the same object, the third set will also have a positive relationship with the separate object.
The minimization module 206 minimizes 312 the third set to create a minimal fourth set. In one embodiment the minimization comprises removing a child object from the set when a parent object of the child object is also a member of the set. In a taxonomy a parent may represent any of its descendants, so removing a child object from the set when a parent object of the child object is also a member of the set ensures that the set contains no objects that can be represented by any other object in the set.
The listing apparatus 200 then lists and stores 314 the minimal fourth set in the data storage device 120. The list contains all objects found in the fourth set. The objects may be listed in any order, and may be stored for use by a database, word-processing, spreadsheet, or internet application, or for use by any other module or application. In one embodiment the listing apparatus 200 employs the listing module 208 to list and store 314 the fourth set.
In an embodiment where the fourth set is a minimal set containing objects having a known positive relationship with a separate object not necessarily included in the taxonomy 102, the list will be a list of objects having a known positive relationship with the separate object. In an example embodiment where the objects represent computer components, or more specifically computer operating systems, and the separate object is another computer component, specifically a computer hardware component, and the known relationship is compatibility, the list that is listed and stored 314 by the listing module 208 would be a minimal list of computer operating systems compatible with the specific computer hardware component selected.
Advantageously, certain embodiments of the apparatus, system, and method presented above may be implemented to simplify the creation of lists of objects having a known positive relationship with a separate object. Certain embodiments also may save additional processing, data access, and computation time when manipulating hierarchical taxonomies.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.