Computer-implemented systems and methods for comparing and associating objects

Information

  • Patent Grant
  • 10152531
  • Patent Number
    10,152,531
  • Date Filed
    Thursday, February 25, 2016
    9 years ago
  • Date Issued
    Tuesday, December 11, 2018
    6 years ago
Abstract
Computer-implemented systems and methods are disclosed for comparing and associating objects. In some embodiments, a method is provided for associating a first object with one or more objects within a plurality of objects, each object comprising a first plurality of properties, each property comprising data reflecting a characteristic of an entity represented by the object, the associated objects comprising matching data in corresponding properties for a second plurality of properties. The method may include executing, for each object within the plurality of objects and for the first object, the following: creating a slug for the object, the slug comprising the second plurality of properties from the object; and inputting the slug for the object into a Bloom filter. Further, the method may include creating for a bin within the Bloom filter corresponding to the slug for the first object, an association between objects whose slugs correspond to the bin if the slugs for those objects match.
Description
BACKGROUND

Numerous organizations, including industry and government entities, recognize that important conclusions can be drawn if massive data sets can be analyzed to identify patterns of behavior that suggest dangers to public safety or evidence illegality. These analyses often involve matching data associated with a person or thing of interest with other data associated with the same person or thing to determine that the same person or thing has been involved in multiple acts that raise safety or criminal concerns.


Yet, the quality of the analytical result arising from use of sophisticated analytical tools can be limited by the quality of data the tool utilizes. For certain types of analyses, an acceptable error rate must be literally or nearly zero for an analytical conclusion drawn from the data to be sound. Achieving this zero or near-zero error rate for datasets comprising tens or hundreds of millions of records can be problematic. Present data comparison tools are not well suited to solve these issues.


The issues discussed above are particularly acute for analyses involving data related to identifying persons or things for inquiries relating to public safety. For example, analytical tools for identifying potential safety threats generally do not have an acceptable error rate greater than zero because the cost of mistakenly identifying the presence of a safety threat (i.e., a “false positive”) or allowing a safety threat to go undetected (i.e., a “false negative”) is unacceptably high. Therefore, tools supporting public safety must correctly relate data associated with persons or things of interest with other data related to the same person or thing.


Some tools exist for accurately comparing data, but they are computationally impractical to use with datasets containing millions of records. For example, one solution to determining whether two particular objects are associated with the same person or thing of interest is to compare each element of one object to a corresponding element in the second object. For example, for objects containing M elements, a first element in the first object may be compared to a corresponding first element in the second object, and corresponding comparisons may be made for each of the remaining M−1 elements common to the first and second objects. If the elements within each object are collectively adequate to uniquely identify the represented person or thing with certainty, and corresponding elements within the first and second objects match, a conclusion may reasonably be drawn that the objects reflect the same person or thing. As an alternative, each object could be converted (serialized) into a single string reflecting the contents of each element to be compared. Thereafter, a string generated from one object could be compared to a string generated from another object as a form of object comparison.


For certain datasets, the above approaches may consume little memory or system resources, because the objects or their serialized strings can be stored on disk rather than in main memory. However, the above approaches may quickly become impractical with large or non-trivial datasets. As the number of objects to compare increases, the number of comparisons and thus the processing time of the comparisons increases exponentially; i.e., proportional to n2/2, where n represents the number of objects to be compared. Thus, a comparison of 500 objects using a serialized approach, whose processing time may be approximated as the time to perform 125,000 string comparisons, may be computationally tractable. However, a comparison of 100 million (100M) records using that approach, whose processing time may be approximated as the time to perform 5 quadrillion (5e15) string comparisons, may be computationally intractable. Additionally, reading strings from disk rather than reading them from memory may add additional processing time.


Another solution for identifying matching objects within a corpus of objects is to store each object in a multimap. This multimap is an associative array that stores multiple values for each key. Importing the objects into the multimap leads to objects with the same element data being stored in a single entry of the multimap. Thus, use of a multimap associates identical objects.


One drawback to using a multimap for object comparisons is that the multimap is typically stored in main memory, due to algorithmic considerations related to key organization within the multimap, so an object comparator must have sufficient main memory to hold a multimap comprising the entire corpus in memory. Therefore, a multimap solution can be impractical for datasets at or above 100M objects. Similar drawbacks exist to each approach as applied to other object comparison problems, such as efficiently identifying unique objects within a corpus of objects and efficiently comparing a single object to all objects within a corpus of object.


Neither solution is viable for datasets approaching or exceeding 100M objects. Yet, object datasets comprising 100M or more objects are not uncommon today. Therefore, the problems described above are quite real and a need exists for improved object comparators.





BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made to the accompanying drawings showing example embodiments of the present application, and in which:



FIG. 1 illustrates a flowchart of an exemplary process for comparing a target object to at least some objects in a corpus, consistent with some embodiments of the present disclosure.



FIG. 2 illustrates a flowchart of an exemplary process for comparing all objects in a corpus to all other objects in the corpus, to determine matches within the corpus, consistent with some embodiments of the present disclosure.



FIG. 3 illustrates a flowchart of an exemplary process for comparing all objects in a corpus to all other objects in the corpus, to determine unique objects within the corpus, consistent with some embodiments of the present disclosure.



FIG. 4 illustrates an exemplary computing environment within which embodiments of the present disclosure can be implemented.





DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Reference will now be made in detail to the embodiments, examples of which are illustrated in the accompanying drawings. Whenever possible, consistent reference numbers will be used throughout the drawings to refer to the same or like parts.


Embodiments of the present disclosure can avoid the shortcomings of traditional object comparators by providing computer-implemented systems and methods for comparing objects in a way that allows for greater computational throughput and acceptable memory consumption without a reduction in comparison accuracy and for dataset sizes that were previously impractical or impossible at acceptable levels of computational throughput.


Embodiments of the present disclosure address a class of computational problems related to object comparison. One member of this class involves efficient object comparison of a particular object to a corpus of objects. Another member of this class involves efficient comparison of each object in a corpus to all other objects in the corpus. An additional member of this class involves efficient identification of unique objects within a corpus of objects.


The following detailed description begins with a general overview of object comparison. Some examples of objects to be compared or analyzed are provided. The description then explains an exemplary embodiment that addresses the first class of problem discussed above (i.e., efficiently comparing one object to all objects in a corpus). The description then expands the solution to the first class of problem to address the second class of problem discussed above (i.e., efficient comparison of each object in a corpus to all other objects in the corpus). The detailed description then discloses a solution to the third class of problem (i.e., efficient identification of unique objects within a corpus of objects). An introduction to objects and an overview of object comparison follows.


Several types of objects exist within the field of computer science. One type of object that is well known within the field of computer science is an object in the object-oriented sense. Wikipedia describes an object of this type as a set of elements (i.e., data structures) and methods, which are similar to functions. Without necessarily endorsing that rather simplistic description, embodiments implementing the object comparison solutions discussed herein are compatible with comparing objects of this type.


Another type of object within the field of computer science field is a data structure that reflects the properties of a person or thing relevant to a particular task or data processing environment. In some embodiments, these properties are reflected by strings. In other embodiments, properties may be reflected by strings, integers, real numbers, times or dates, binary values, structures in the C programming sense, enumerated variables, and/or other forms of data. In some embodiments, properties within either type of object may be converted to strings prior to comparison. In other embodiments, some properties may be strings or may be converted to strings while other properties may not be strings and may not be converted to strings. The embodiments of the present disclosure may operate on string or non-string properties.


Moreover, the notion of a “data structure” is very flexible in this context. The term “data structure” can reflect any type of structured data, from information stored in a database (with table columns reflecting elements within an object or data structure and table rows reflecting instances of the object or data structure) to formatted text in a text file (such as data within an XML structure) to data stored within an executing computer program. Accordingly, because a data structure broadly encompasses the types of structured data described above, objects also broadly encompass these types of structured data. Moreover, the object comparison solutions discussed herein are also compatible with comparing objects of these types.


In some embodiments, effective object comparison involves considering which properties of the objects to be compared are relevant to performing the comparison because the entities (e.g., persons or things) reflected by those objects may have different relevant properties in different environments. For example, an object can store properties of an automobile that may be relevant to a state's motor vehicle department by storing the following information: vehicle identification number (VIN), year of manufacture, make, model, expiration date of the vehicle's registration, and a direct or indirect indication of the person that owns the vehicle.


For automobiles being sold on an auction website such as eBay, however, the relevant properties of an automobile may differ from those relevant to the state's motor vehicle department. For example, a data structure for storing properties of an automobile listed for sale on eBay may include: VIN, year, make, model, odometer reading, condition of the automobile, minimum auction bid, and a direct or indirect indication of the person listing the vehicle for sale. Thus, properties of an entity (e.g., a person or thing) relevant to one environment may differ from properties of the entity relevant to another environment. Accordingly, an object's properties considered during object comparison in one environment may differ from those considered during object comparison in a second environment.


In some embodiments, effective data comparison may also involve considering which properties tend to distinguish an entity (e.g., a person or thing) from other instances of the entity. For example, a VIN for an automobile should by design be unique to that automobile. However, occasional situations may arise where a VIN is not unique to a particular automobile. Such situations may arise from intentional errors or accidental errors. An example of an intentional error is attempting fraudulent registration of a stolen vehicle under an assumed VIN. An example of an accidental error occurs when a smog check worker incorrectly enters a VIN into a computer at a smog check station, which leads to a smog check record with an incorrect VIN subsequently being communicated to a state database. Data errors exist in real world data processing environments, so some embodiments of the present disclosure minimize or eliminate errors by identifying objects through a combination of several object properties rather than identifying objects through use of a single object property.


In some embodiments, one or more identifying properties of an object are extracted from the object and stored in a data structure. This data structure is referred to as a “slug”; it contains information that may be sufficient to uniquely identify an entity (e.g., a person or thing) with some degree of information redundancy to allow for detecting errors in the properties within the slug. In some embodiments, the slug comprises a concatenation of strings separated by a delimiter character. In some embodiments, the delimiter character is a NULL character while in other embodiments the delimiter character may be a character not otherwise present in the concatenated string. In some embodiments, the concatenated strings may be delimited by a delimiter string (e.g., “--”) rather than a delimiter character. In embodiments employing a delimiter string, the delimiter string may be any string that is not otherwise present in the strings that were concatenated. In other embodiments, the slug comprises a data structure such as an object, array, structure, or associative array.


For example, in one embodiment, slug for an automobile may contain properties reflecting a VIN, make, model, and year for the automobile. Inclusion of make, model, and year properties for the automobile within the slug provides a capability for detecting errors in the VIN property because the VIN property is not the only object property being compared. For slugs associated with two automobiles to match in the presence of an error in the VIN property of one automobile object, an automobile object with the same VIN property as the erroneous VIN must also have the same make, model, and year properties.


The odds of this coincidental match of multiple properties between two or more objects may be fleetingly low. Therefore, inclusion of some degree of information redundancy should avoid or at least substantially reduce erroneous object comparison matches relative to object comparisons only comparing a single property between objects notwithstanding that the single property was intended to uniquely identify its corresponding entity (e.g., person or thing).


Exemplary embodiments will now be described that solve the first problem discussed above, i.e., efficiently comparing a particular object (hereinafter a “target object”) to all objects in a corpus. The disclosed embodiments utilize a Bloom filter to identify slugs associated with objects in the corpus that do not match the slug for the target object. This quick recognition is performed by discarding slugs that are associated with a different bin in the Bloom filter than the bin associated with the slug for the target object.


Bloom filters have the property that two slugs falling into different bins within the Bloom filter are certain to have different properties and thus reflect different objects. Therefore, if the slug for the target object does not fall into the same bin as the slug for a particular object in the corpus, the target object does not match the particular object in the corpus and may thus be removed from future consideration in such embodiments.



FIG. 1 illustrates a flowchart of an exemplary process 100 for comparing a target object to at least some objects in a corpus, consistent with some embodiments of the present disclosure. In some embodiments, the target object to be compared to at least some objects in the corpus is a member of the corpus. In these embodiments, a comparison between the target object and all other objects in the corpus is performed. In other embodiments, the object to be compared to at least some objects in the corpus is not a member of the corpus. In these other embodiments, a comparison between the target object and all objects in the corpus is performed.


As illustrated, in step 102, a Bloom filter is sized and created with consideration for the error rate that will result for the corpus size that is being processed. For example, increasing the number of bins in a Bloom filter may tend to decrease the error rate for a specific corpus size while reducing the number of bins in a Bloom filter may tend to increase the error rate for a specific corpus size. Techniques for sizing a Bloom filter to achieve a target error rate for a specific corpus size are well known in the art, so these techniques are not discussed herein.


In step 104, a slug for the target object (i.e., the object against which all objects in the corpus will be compared) is generated. Considerations for selecting which properties of an object to include in a slug were discussed above. In step 106, a Bloom filter bin corresponding to the slug for the target object is determined. In some embodiments, a Bloom filter bin for a slug may be determined by inputting the slug to a Bloom filter and directing the Bloom filter to disclose the bin into which the slug was added.


In other embodiments, a Bloom filter bin for a slug may be determined by presenting the slug as a input to a software function associated with the Bloom filter without storing the slug in the Bloom filter. In additional embodiments, a bin for a slug may be determined by inputting the slug into a software function reflecting a bin selection algorithm for a Bloom filter in the absence of using an actual and/or complete Bloom filter and receiving the Bloom filter bin as an output of that software function. In other embodiments, other approaches to yielding a Bloom filter bin from a slug may be utilized. These approaches for identifying a Bloom filter bin for a slug, consistent with the embodiments discussed above, are collectively referred to in steps 106, 108. The determined Bloom filter bin will be utilized to identify slug comparison matches, some of which may be “false positives”, using the Bloom filter as discussed below.


In step 108, a slug for each object in the corpus is generated. In step 110, a Bloom filter bin for each object in the corpus is determined. In some embodiments, a Bloom filter bin for an object may be determined by inputting the object's slug into the Bloom filter and directing the Bloom filter to disclose the bin into which the slug was added.


After completion of step 110, slugs corresponding to the bin identified in step 108 reflect matches with the slug for the target object. Some of these matches, however, may be false positive matches rather than true matches. Therefore, steps 112 and 114 filter out the false positive matches through use of a multimap.


In step 112, for each slug corresponding to an object in the corpus whose bin in the Bloom filter is the same bin as the slug for the target object, the slug corresponding to an object in the corpus and its corresponding object in the corpus is added to a multimap. When adding the slug and its corresponding object to the multimap, the slug represents the key to the multimap and the object in the corpus represents the value to the multimap. This multimap will be utilized to remove false positives from processing. In step 114, the process concludes by selecting the true positive matches identified in the multimap. These non-false positive matches can be retrieved from the multimap by reading data from the multimap with the slug for the target object as a key.


In some embodiments, process 100 may be distributed across multiple processors. For example, a Bloom filter may exist on each of several processors and steps 102 through 114 can be executed on each of the several processors. The corpus of objects may be distributed among the various processors so that all objects are processed by one processor, but no object is processed by more than one processor. In such embodiments, each of the multiple processors outputs a portion of the objects in the corpus that match the target object.


Exemplary embodiments will now be described that solve the second problem discussed above, i.e., efficiently comparing all objects to all objects in a corpus. These embodiments utilize a counting Bloom filter to quickly identify slugs associated with objects in the corpus that do not match the slug for the target object. Counting Bloom filters are well known in the art, so their structure and construction are not discussed herein.


In particular, if a bin in the counting Bloom filter has a value of zero or one after slugs for all of the objects in the corpus have been input to the Bloom filter, no object whose slug is associated with that bin could match another slug, so these slugs are removed from further consideration. These slugs can be removed because those skilled in the art will recognize that Bloom filters can have false positives but they cannot have false negatives. Therefore, a counting Bloom filter bin whose count is less than two reflects an accurate determination that no match exists between slugs associated with that bin because any match would create a count of at least two. However, false positive may exist among objects whose slugs are associated with the same Bloom filter bin, so false positives may be removed through additional processing, as discussed below.



FIG. 2 illustrates a flowchart of an exemplary process 200 for comparing all objects in a corpus to all other objects in the corpus, to determine matches within the corpus, consistent with some embodiments of the present disclosure. As illustrated, in step 202, a counting Bloom filter is sized and created with consideration for the error rate that will result for the corpus size that is being processed. For example, increasing the number of bins in a counting Bloom filter may tend to decrease the error rate for a specific corpus size while reducing the number of bins in a counting Bloom filter may tend to increase the error rate for a specific corpus size. Techniques for sizing a counting Bloom filter to achieve a target error rate for a specific corpus size are well known in the art, so these techniques are not discussed herein.


In some embodiments, the counting Bloom filter may comprise an N-bit counter and these counters may be implemented as two-bit counters (i.e., N=2). In other embodiments, these counters may be one-bit counters or counters of more than two bits. In additional embodiments, these counters are saturation counters; i.e., these counters will count up to a maximum value and then not exceed that value.


In step 204, a slug for each object in the corpus is generated. In step 206, each slug is input to the counting Bloom filter, which causes a counter in a bin corresponding to a slug to be incremented. After completion of step 206, bins whose counters have a value greater than one reflect one or more matching slugs. Some of these matches, however, may be false positive matches rather than true matches. Therefore, steps 208 and 210 filter out the false positive matches through use of a multimap.


In step 208, for slugs associated with bins in the counting Bloom filter whose counters have a value greater than 1, the slug and its associated object are added to a multimap. When adding the slug and its corresponding object to the multimap, the slug represents the key to the multimap and the object in the corpus represents the value to the multimap. This multimap will be utilized to remove false positives from processing. In step 210, the process 200 concludes by outputting a value for any key in the multimap that has two or more values. The outputted values reflect objects whose slugs matched slugs of at least one other object in the corpus. Thus, the objects outputted identify objects whose selected properties, as reflected in an object's slug, unambiguously match at least one other object in the corpus.


In some embodiments, process 200 may be distributed across multiple processors. For example, a counting Bloom filter may exist on each of several processors and steps 202, 204, and 206 can be executed on each of the several processors. The corpus of objects may be distributed among the various processors so that all objects are processed by one processor, but no object is processed by more than one processor. In such embodiments, prior to executing step 208, counters for each bin in the counting Bloom filter are summed together with counters for the same bin in counting Bloom filters on other processors. Thereafter, process 200 continues by executing steps 208 and 210 on a single processor.


Exemplary embodiments will now be described that solve the third problem discussed above, i.e., efficiently identifying unique objects in a corpus. These embodiments utilize a counting Bloom filter and a multimap to quickly identify unique objects. Upon inputting slugs for all objects in the corpus into the counting Bloom filter, any bin with a count value of one reflects a unique object because Bloom filters do not generate false negatives. Additionally, to the extent that bins have count values of two or more, those count values could reflect false positives. Therefore, a multimap allows a determination of whether the matches reflected in the count values were false or true positives.



FIG. 3 illustrates a flowchart of an exemplary process 300 for comparing all objects in a corpus to all other objects in the corpus, to determine unique objects within the corpus, consistent with some embodiments of the present disclosure. As illustrated, in step 302, a counting Bloom filter is sized and created with consideration for the error rate that will result for the corpus size that is being processed. For example, increasing the number of bins in a counting Bloom filter may tend to decrease the error rate for a specific corpus size while reducing the number of bins in a counting Bloom filter may tend to increase the error rate for a specific corpus size. Techniques for sizing a counting Bloom filter to achieve a target error rate for a specific corpus size are well known so these techniques are not discussed herein.


In some embodiments, the counting Bloom filter may comprise an N-bit counter and these counters may be implemented as two-bit counters (i.e., N=2). In other embodiments, these counters may be one-bit counters or counters of more than two bits. In additional embodiments, these counters are saturation counters; i.e., these counters will count up to a maximum value and then not exceed that value.


In step 304, a slug for each object in the corpus is generated. In step 306, each slug is input to the counting Bloom filter, which causes a counter in a bin corresponding to the slug to be incremented. As previously discussed, after slugs for all objects in the corpus have been input to the counting Bloom filter, any bin with a count value of one reflects a unique object within the corpus because the counting Bloom filter does not generate false negatives. Therefore, in step 308, for each slug whose counter in the counting Bloom filter is one, the slug's corresponding object is output as a unique object within the corpus.


After completion of step 308, bins whose counters have a value greater than one reflect one or more matching slugs; i.e., slugs that are not unique. Some of these matches, however, may be false positive matches rather than true matches due to the nature of Bloom filters, as discussed above. Therefore, steps 310 and 312 filter out the false positive matches through use of a multimap.


Steps 310 and 312 determine whether the counting Bloom filter is masking the existence of other unique objects because the Bloom filter allows for false positives. In step 310, for each slug whose associated bin has a counter value greater than one, the slug is input as a key to a multimap and the object corresponding to the slug is input as a value for that key. In step 312, the process terminates after outputting each value in the multimap for keys that have only one value. Unique objects within the corpus are reflected by the collection of objects output from step 308 and the collection of objects output by step 312 because the former reflects objects whose slugs were the only slug in a counting Bloom filter's bin and were therefore unique among slugs associated with objects in the corpus while the latter reflects slugs that were false positives within the counting Bloom filter but were disambiguated by the multimap.


In some embodiments, process 300 may be distributed across multiple processors. For example, a counting Bloom filter may exist on each of several processors and steps 302, 304, and 306 can be executed on each of several processors. The corpus of objects may be distributed among the various processors so that all objects are processed by one processor, but no object is processed by more than one processor. In such embodiments, prior to executing step 308, counters for each bin in the counting Bloom filter are summed together with counters for the same bin in counting Bloom filters on other processors. Thereafter, process 300 continues by executing steps 308, 310, and 312 on a single processor.



FIG. 4 illustrates an exemplary computing environment within which the embodiments of the present disclosure can be implemented.


Computer system 400 includes a bus 402 or other communication mechanism for communicating information, and a hardware processor 404 coupled with bus 402 for processing information. In some embodiments, hardware processor 404 can be, for example, a general-purpose microprocessor or it can be a reduced instruction set microprocessor.


Computer system 400 also includes a main memory 406, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 also can be used for storing temporary variables or other intermediate information during execution of instructions by processor 404. Such instructions, when stored in non-transitory storage media accessible to processor 404, render computer system 400 into a special-purpose machine that is customized to perform the operations specified in the instructions.


In some embodiments, computer system 400 further includes a read only memory (ROM) 408 or other static storage device coupled to bus 402 for storing static information and instructions for processor 404. A storage device 410, such as a magnetic disk or optical disk, is provided and coupled to bus 402 for storing information and instructions.


Computer system 400 can be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT) or LCD panel, for displaying information to a computer user. An input device 414, including alphanumeric and other keys, is coupled to bus 402 for communicating information and command selections to processor 404. Another type of user input device is cursor control 416, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. The input device typically has degrees of freedom in two axes, a first axis (for example, x) and a second axis (for example, y), that allows the device to specify positions in a plane.


Computer system 400 can implement the processes and techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 400 to be a special-purpose machine. In some embodiments, the processes and techniques herein are performed by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions can be read into main memory 406 from another storage medium, such as storage device 410. Execution of the sequences of instructions contained in main memory 406 causes processor 404 to perform the process steps described herein. In other embodiments, hard-wired circuitry can be used in place of or in combination with software instructions.


The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operate in a specific manner. Such storage media can comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 410. Volatile media includes dynamic memory, such as main memory 406. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.


Storage media is distinct from but can be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.


Various forms of media can be involved in carrying one or more sequences of one or more instructions to processor 404 for execution. For example, the instructions can initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 400 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 can optionally be stored on storage device 410 either before or after execution by processor 404.


Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides a two-way data communication coupling to a network link 420 that is connected to a local network 422. For example, communication interface 418 can be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 418 can be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communication interface 418 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.


Network link 420 typically provides data communication through one or more networks to other data devices. For example, network link 420 can provide a connection through local network 422 to a host computer 424 or to data equipment operated by an Internet Service Provider (ISP) 426. ISP 426 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 428. Local network 422 and Internet 428 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 420 and through communication interface 418, which carry the digital data to and from computer system 400, are example forms of transmission media.


Computer system 400 can send messages and receive data, including program code, through the network(s), network link 420 and communication interface 418. In the Internet example, a server 430 might transmit a requested code for an application program through Internet 428, ISP 426, local network 422 and communication interface 418. The received code can be executed by processor 404 as it is received, and/or stored in storage device 410, or other non-volatile storage for later execution.

Claims
  • 1. An electronic device comprising: one or more computer-readable storage media configured to store instructions; andone or more processors configured to execute the instructions to cause the electronic device to: execute, using the one or more processors, for each object within a plurality of objects, the following steps: create a data structure of a first type comprising information for identifying one or more objects comprising a set of properties, wherein the data structure of a first type is created based at least in part on one or more properties associated with the object;input the data structure of a first type into a software function, wherein the software function is configured to determine an association between the object and a second object, wherein the object comprises a first set of properties, and wherein the second object comprises a second set of properties; anddetermine the association between the object and the second object based on the software function.
  • 2. The electronic device in claim 1, wherein the software function determines the association between the object and the second object based at least in part on a data structure of a second type.
  • 3. The electronic device of claim 1, wherein the software function determines the association between the object and the second object based at least in part on adding a data structure of a first type for the object and a data structure of a first type for the second object into a portion of a data structure of a second type.
  • 4. The electronic device of claim 3, wherein the association between the object and the second object is the portion of the data structure of a second type.
  • 5. The electronic device of claim 4, wherein the data structure of a first type is a slug, the data structure of a second type is a Bloom filter, and the portion of the data structure of a second type is a bin.
  • 6. The electronic device of claim 4, wherein the one or more processors are further configured to execute the instructions to cause the electronic device to: size the data structure of a second type based at least on an amount of objects within the plurality of objects.
  • 7. The electronic device of claim 4, wherein the one or more processors are further configured to execute the instruction to cause the electronic device to: cause the data structure of a second type to add each data structure of a first type into the portion of the data structure of a second type; andfor each portion of the data structure of a second type comprising two or more data structures of a first type: add the two or more data structures of a first type to a multimap.
  • 8. The electronic device of claim 7, wherein the one or more processors are further configured to execute the instructions to cause the electronic device to: add two or more objects that correspond to the two or more data structures of a first type added to the multimap to the multimap; andin response to the added two or more objects being different from each other, remove at least one of the two or more data structures of a first type from their respective portion of the data structure of a second type.
  • 9. A method performed by at least one electronic device comprising one or more processors, the method comprising: executing, using at least one processor, for each object within a plurality of objects, the following steps: creating a data structure of a first type comprising information for identifying one or more objects comprising a set of properties, wherein the data structure of a first type is created based at least in part on one or more properties associated with the object;inputting the data structure of a first type into a software function, wherein the software function is configured to determine an association between the object and a second object, wherein the object comprises a first set of properties, and wherein the second object comprises a second set of properties that include at least a portion of the first set of properties; anddetermining the association between the object and the second object based on the software function.
  • 10. The method of claim 9, wherein the software function determines the association between the object and the second object based at least in part on a data structure of a second type.
  • 11. The method of claim 9, wherein the software function determines the association between the object and the second object based at least in part on adding a data structure of a first type for the object and a data structure of a first type for the second object into a portion of a data structure of a second type.
  • 12. The method of claim 11, wherein the association between the object and the second object is the portion of the data structure of a second type.
  • 13. The method of claim 12, wherein the data structure of a first type is a slug, the data structure of a second type is a Bloom filter, and the portion of the data structure of a second type is a bin.
  • 14. The method of claim 12, wherein the method further comprises: causing the data structure of a second type to add each data structure of a first type into the portion of the data structure of a second type; andfor each portion of the data structure of a second type comprising two or more data structures of a first type:adding the two or more data structures of a first type to a multimap.
  • 15. A non-transitory computer readable medium that stores a set of instructions that ae executable by at least one processor of an electronic device to cause the electronic device to perform a method for associating objects the method comprising: executing, using at least one processor, for each object within a plurality of objects, the following steps: creating a data structure of a first type comprising information for identifying one or more objects comprising a set of properties, wherein the data structure of a first type is created based at least in part on one or more properties associated with the object;inputting the data structure of a first type into a software function, wherein the software function is configured to determine an association between the object and a second object, wherein the object comprises a first set of properties, and wherein the second object comprises a second set of properties that include at least a portion of the first set of properties; anddetermining the association between the object and the second object based on the software function.
  • 16. The non-transitory computer readable medium of claim 15, wherein the software function determines the association between the object and the second object based at least in part on a data structure of a second type.
  • 17. The non-transitory computer readable medium of claim 15, wherein the software function determines the association between the object and the second object based at least in part on a data structure of a first type for the object and a data structure of a first type for the second object into a portion of a data structure of a second type.
  • 18. The non-transitory computer readable medium of claim 17, wherein the association between the object and the second object is the portion of the data structure of a second type.
  • 19. The non-transitory computer readable medium of claim 18, wherein the data structure of a first type is a slug, the data structure of a second type is a Bloom filter, and the portion of the data structure of a second type is a bin.
  • 20. The non-transitory computer readable medium of claim 18, wherein the set of instructions that are executable by at least one processor of the electronic device to cause the electronic device to further perform: causing the data structure of a second type to add each data structure of a first type into the portion of the data structure of a second type; andfor each portion of the data structure of a second type comprising two or more data structure of a first type:adding the two or more data structures of a first type to a multimap.
REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. Non-Provisional application Ser. No. 14/552,336, filed on Nov. 24, 2014, which is a continuation of U.S. Non-Provisional application Ser. No. 14/099,661, filed on Dec. 6, 2013, which claims the benefit of priority to U.S. Provisional Patent Application No. 61/801,297, filed on Mar. 15, 2013, the disclosures of which are expressly incorporated herein by reference in their entireties.

US Referenced Citations (416)
Number Name Date Kind
5241625 Epard et al. Aug 1993 A
5826021 Mastors et al. Oct 1998 A
5832218 Gibbs et al. Nov 1998 A
5845300 Corner Dec 1998 A
5878434 Draper et al. Mar 1999 A
5897636 Kaeser Apr 1999 A
5966706 Biliris et al. Oct 1999 A
5999911 Berg et al. Dec 1999 A
6006242 Poole et al. Dec 1999 A
6057757 Arrowsmith et al. May 2000 A
6065026 Cornelia et al. May 2000 A
6134582 Kennedy Oct 2000 A
6232971 Haynes May 2001 B1
6237138 Hameluck et al. May 2001 B1
6243706 Moreau et al. Jun 2001 B1
6243717 Gordon et al. Jun 2001 B1
6370538 Lamping et al. Apr 2002 B1
6430305 Decker Aug 2002 B1
6463404 Appleby Oct 2002 B1
6519627 Dan et al. Feb 2003 B1
6523019 Borthwick Feb 2003 B1
6665683 Meltzer Dec 2003 B1
6820135 Dingman Nov 2004 B1
6850317 Mullins et al. Feb 2005 B2
6944821 Bates et al. Sep 2005 B1
6967589 Peters Nov 2005 B1
6978419 Kantrowitz Dec 2005 B1
6980984 Huffman et al. Dec 2005 B1
7058648 Lightfoot et al. Jun 2006 B1
7086028 Davis et al. Aug 2006 B1
7089541 Ungar Aug 2006 B2
7168039 Bertram Jan 2007 B2
7174377 Bernard et al. Feb 2007 B2
7194680 Roy et al. Mar 2007 B1
7213030 Jenkins May 2007 B1
7392254 Jenkins Jun 2008 B1
7403942 Bayliss Jul 2008 B1
7441182 Beilinson et al. Oct 2008 B2
7441219 Perry et al. Oct 2008 B2
7461077 Greenwood Dec 2008 B1
7461158 Rider et al. Dec 2008 B2
7617232 Gabbert et al. Nov 2009 B2
7627489 Schaeffer et al. Dec 2009 B2
7739246 Mooney et al. Jun 2010 B2
7756843 Palmer Jul 2010 B1
7757220 Griffith et al. Jul 2010 B2
7765489 Shah et al. Jul 2010 B1
7877421 Berger et al. Jan 2011 B2
7880921 Dattilo et al. Feb 2011 B2
7899796 Borthwick et al. Mar 2011 B1
7912842 Bayliss Mar 2011 B1
7917376 Bellin et al. Mar 2011 B2
7941321 Greenstein et al. May 2011 B2
7941336 Robin-Jan May 2011 B1
7966199 Frasher May 2011 B1
7958147 Turner et al. Jun 2011 B1
7962495 Jain et al. Jun 2011 B2
8010507 King et al. Aug 2011 B2
8036971 Aymeloglu et al. Oct 2011 B2
8037046 Udezue et al. Oct 2011 B2
8046283 Burns Oct 2011 B2
8054756 Chand et al. Nov 2011 B2
8073857 Sreekanth Dec 2011 B2
8117022 Linker Feb 2012 B2
8126848 Wagner Feb 2012 B2
8147715 Bruckhaus et al. Apr 2012 B2
8214490 Vos et al. Jul 2012 B1
8229902 Vishniac et al. Jul 2012 B2
8290838 Thakur et al. Oct 2012 B1
8302855 Ma et al. Nov 2012 B2
8364642 Garrod Jan 2013 B1
8386377 Xiong et al. Feb 2013 B1
8429527 Arbogast Apr 2013 B1
8473454 Evanitsky et al. Jun 2013 B2
8484115 Aymeloglu et al. Jul 2013 B2
8489641 Seefeld et al. Jul 2013 B1
8554719 McGrew Oct 2013 B2
8577911 Stepinski et al. Nov 2013 B1
8589273 Creeden et al. Nov 2013 B2
8601326 Kim Dec 2013 B1
8639552 Chen et al. Jan 2014 B1
8682696 Shanmugam Mar 2014 B1
8688573 Rukonic et al. Apr 2014 B1
8732574 Burr et al. May 2014 B2
8744890 Bernier Jun 2014 B1
8799313 Satlow Aug 2014 B2
8799799 Cervelli et al. Aug 2014 B1
8806355 Twiss et al. Aug 2014 B2
8807948 Luo et al. Aug 2014 B2
8812444 Garrod et al. Aug 2014 B2
8812960 Sun et al. Aug 2014 B1
8838538 Landau et al. Sep 2014 B1
8855999 Elliot Oct 2014 B1
8903717 Elliot Dec 2014 B2
8924388 Elliot et al. Dec 2014 B2
8924389 Elliot et al. Dec 2014 B2
8930874 Duff et al. Jan 2015 B2
8938434 Jain et al. Jan 2015 B2
8938686 Erenrich et al. Jan 2015 B1
8949164 Mohler Feb 2015 B1
8984390 Aymeloglu et al. Mar 2015 B2
9058315 Burr et al. Jun 2015 B2
9069842 Melby Jun 2015 B2
9100428 Visbal Aug 2015 B1
9105000 White et al. Aug 2015 B1
9111281 Stibel et al. Aug 2015 B2
9129219 Robertson et al. Sep 2015 B1
9165100 Begur et al. Oct 2015 B2
9230060 Friedlander et al. Jan 2016 B2
9256664 Chakerian et al. Feb 2016 B2
20020032677 Moregenthaler et al. Mar 2002 A1
20020035590 Eibach et al. Mar 2002 A1
20020065708 Senay et al. May 2002 A1
20020095360 Joao Jul 2002 A1
20020095658 Shulman Jul 2002 A1
20020103705 Brady Aug 2002 A1
20020147805 Leshem et al. Oct 2002 A1
20020194058 Eldering Dec 2002 A1
20020196229 Chen et al. Dec 2002 A1
20030036927 Bowen Feb 2003 A1
20030088438 Maughan et al. May 2003 A1
20030093401 Czahowski et al. May 2003 A1
20030093755 O'Carroll May 2003 A1
20030105759 Bess et al. Jun 2003 A1
20030115481 Baird et al. Jun 2003 A1
20030126102 Borthwick Jul 2003 A1
20030171942 Gaito Sep 2003 A1
20030177112 Gardner Sep 2003 A1
20030182313 Federwisch et al. Sep 2003 A1
20030212718 Tester Nov 2003 A1
20040003009 Wilmot Jan 2004 A1
20040006523 Coker Jan 2004 A1
20040034570 Davis Feb 2004 A1
20040044648 Anfindsen et al. Mar 2004 A1
20040083466 Dapp et al. Apr 2004 A1
20040088177 Travis et al. May 2004 A1
20040111480 Yue Jun 2004 A1
20040117387 Civetta et al. Jun 2004 A1
20040153418 Hanweck Aug 2004 A1
20040205492 Newsome Oct 2004 A1
20040210763 Jonas Oct 2004 A1
20040236688 Bozeman Nov 2004 A1
20040236711 Nixon et al. Nov 2004 A1
20050010472 Quatse et al. Jan 2005 A1
20050028094 Allyn Feb 2005 A1
20050039116 Slack-Smith Feb 2005 A1
20050086207 Heuer et al. Apr 2005 A1
20050091186 Alon Apr 2005 A1
20050097441 Herbach et al. May 2005 A1
20050102328 Ring et al. May 2005 A1
20050125715 Di Franco et al. Jun 2005 A1
20050131935 O'Leary et al. Jun 2005 A1
20050154628 Eckart et al. Jul 2005 A1
20050154769 Eckart et al. Jul 2005 A1
20050262512 Schmidt et al. Nov 2005 A1
20060010130 Leff et al. Jan 2006 A1
20060026120 Carolan et al. Feb 2006 A1
20060026170 Kreitler et al. Feb 2006 A1
20060026561 Bauman et al. Feb 2006 A1
20060031779 Theurer et al. Feb 2006 A1
20060053097 King et al. Mar 2006 A1
20060053170 Hill et al. Mar 2006 A1
20060059423 Lehmann et al. Mar 2006 A1
20060080139 Mainzer Apr 2006 A1
20060080283 Shipman Apr 2006 A1
20060080316 Gilmore et al. Apr 2006 A1
20060129746 Porter Jun 2006 A1
20060136513 Ngo et al. Jun 2006 A1
20060143034 Rothermel Jun 2006 A1
20060143075 Carr et al. Jun 2006 A1
20060143079 Basak et al. Jun 2006 A1
20060155654 Plessis et al. Jul 2006 A1
20060178915 Chao Aug 2006 A1
20060178954 Thukral et al. Aug 2006 A1
20060218206 Bourbonnais et al. Sep 2006 A1
20060218941 Grossman et al. Sep 2006 A1
20060253502 Raman et al. Nov 2006 A1
20060265417 Amato et al. Nov 2006 A1
20060277460 Forstall et al. Dec 2006 A1
20070000999 Kubo et al. Jan 2007 A1
20070011304 Error Jan 2007 A1
20070038646 Thota Feb 2007 A1
20070043686 Teng et al. Feb 2007 A1
20070061752 Cory Mar 2007 A1
20070067285 Blume Mar 2007 A1
20070113164 Hansen et al. May 2007 A1
20070136095 Weinstein Jun 2007 A1
20070150801 Chidlovskii et al. Jun 2007 A1
20070156673 Maga Jul 2007 A1
20070162454 D'Albora et al. Jul 2007 A1
20070168871 Jenkins Jul 2007 A1
20070178501 Rabinowitz et al. Aug 2007 A1
20070185850 Walters et al. Aug 2007 A1
20070185867 Maga Aug 2007 A1
20070192122 Routson et al. Aug 2007 A1
20070233756 D'Souza et al. Oct 2007 A1
20070245339 Bauman et al. Oct 2007 A1
20070271317 Carmel Nov 2007 A1
20070284433 Domenica et al. Dec 2007 A1
20070295797 Herman et al. Dec 2007 A1
20070299697 Friedlander et al. Dec 2007 A1
20080005063 Seeds Jan 2008 A1
20080016155 Khalatian Jan 2008 A1
20080065655 Chakravarthy et al. Mar 2008 A1
20080077642 Carbone et al. Mar 2008 A1
20080091693 Murthy Apr 2008 A1
20080109714 Kumar et al. May 2008 A1
20080126344 Hoffman et al. May 2008 A1
20080126951 Sood et al. May 2008 A1
20080140387 Linker Jun 2008 A1
20080172607 Baer Jul 2008 A1
20080177782 Poston et al. Jul 2008 A1
20080195672 Hamel et al. Aug 2008 A1
20080208735 Balet et al. Aug 2008 A1
20080222295 Robinson et al. Sep 2008 A1
20080228467 Womack et al. Sep 2008 A1
20080249820 Pathria et al. Oct 2008 A1
20080255973 El Wade et al. Oct 2008 A1
20080267386 Cooper Oct 2008 A1
20080270316 Guidotti et al. Oct 2008 A1
20080281580 Zabokritski Nov 2008 A1
20080294663 Heinley et al. Nov 2008 A1
20080313132 Hao et al. Dec 2008 A1
20080313243 Poston et al. Dec 2008 A1
20090031401 Cudich et al. Jan 2009 A1
20090043801 LeClair et al. Feb 2009 A1
20090055487 Moraes et al. Feb 2009 A1
20090089651 Herberger et al. Apr 2009 A1
20090094270 Alirez et al. Apr 2009 A1
20090106178 Chu Apr 2009 A1
20090106242 McGrew et al. Apr 2009 A1
20090112678 Luzardo Apr 2009 A1
20090112745 Stefanescu Apr 2009 A1
20090125359 Knapic May 2009 A1
20090125459 Norton et al. May 2009 A1
20090132953 Reed, Jr. et al. May 2009 A1
20090150868 Chakra et al. Jun 2009 A1
20090157732 Hao et al. Jun 2009 A1
20090164387 Armstrong et al. Jun 2009 A1
20090177962 Gusmorino et al. Jul 2009 A1
20090187546 Whyte et al. Jul 2009 A1
20090187548 Ji et al. Jul 2009 A1
20090199106 Jonsson et al. Aug 2009 A1
20090248757 Havewala et al. Oct 2009 A1
20090249178 Ambrosino et al. Oct 2009 A1
20090249244 Robinson et al. Oct 2009 A1
20090254842 Leacock et al. Oct 2009 A1
20090271343 Vaiciulis et al. Oct 2009 A1
20090281839 Lynn et al. Nov 2009 A1
20090282068 Shockro et al. Nov 2009 A1
20090299830 West et al. Dec 2009 A1
20090307049 Elliott et al. Dec 2009 A1
20090313311 Hoffmann et al. Dec 2009 A1
20090313463 Pang et al. Dec 2009 A1
20090319418 Herz Dec 2009 A1
20090319891 MacKinlay Dec 2009 A1
20100030722 Goodson et al. Feb 2010 A1
20100031141 Summers et al. Feb 2010 A1
20100042922 Bradeteanu et al. Feb 2010 A1
20100057622 Faith et al. Mar 2010 A1
20100070531 Aymeloglu et al. Mar 2010 A1
20100070842 Aymeloglu et al. Mar 2010 A1
20100082541 Kottomtharayil Apr 2010 A1
20100082671 Li et al. Apr 2010 A1
20100098318 Anderson Apr 2010 A1
20100106752 Eckardt et al. Apr 2010 A1
20100114817 Gilbert et al. May 2010 A1
20100114887 Conway et al. May 2010 A1
20100131502 Fordham May 2010 A1
20100145909 Ngo Jun 2010 A1
20100161735 Sharma Jun 2010 A1
20100191563 Schlaifer et al. Jul 2010 A1
20100204983 Chung et al. Aug 2010 A1
20100211535 Rosenberger Aug 2010 A1
20100223260 Wu Sep 2010 A1
20100235915 Memon et al. Sep 2010 A1
20100238174 Haub et al. Sep 2010 A1
20100262688 Hussain et al. Oct 2010 A1
20100262901 DiSalvo Oct 2010 A1
20100280851 Merkin Nov 2010 A1
20100293174 Bennett et al. Nov 2010 A1
20100306285 Shah et al. Dec 2010 A1
20100312837 Bodapati et al. Dec 2010 A1
20100313239 Chakra et al. Dec 2010 A1
20110047540 Williams et al. Feb 2011 A1
20110061013 Billicki et al. Mar 2011 A1
20110066497 Gopinath et al. Mar 2011 A1
20110074788 Regan et al. Mar 2011 A1
20110078173 Seligmann et al. Mar 2011 A1
20110093327 Fordyce et al. Apr 2011 A1
20110099133 Chang et al. Apr 2011 A1
20110153384 Horne et al. Jun 2011 A1
20110161409 Nair et al. Jun 2011 A1
20110173093 Psota et al. Jul 2011 A1
20110179048 Satlow Jul 2011 A1
20110208565 Ross et al. Aug 2011 A1
20110208724 Jones et al. Aug 2011 A1
20110208822 Rathod Aug 2011 A1
20110213655 Henkin Sep 2011 A1
20110218955 Tang Sep 2011 A1
20110225482 Chan et al. Sep 2011 A1
20110252282 Meek et al. Oct 2011 A1
20110258216 Supakkul et al. Oct 2011 A1
20110270604 Qi et al. Nov 2011 A1
20110270834 Sokolan et al. Nov 2011 A1
20110289397 Eastmond et al. Nov 2011 A1
20110295649 Fine Dec 2011 A1
20110314007 Dassa et al. Dec 2011 A1
20110314024 Chang et al. Dec 2011 A1
20120004894 Butler et al. Jan 2012 A1
20120004904 Shin et al. Jan 2012 A1
20120011238 Rathod Jan 2012 A1
20120011245 Gillette et al. Jan 2012 A1
20120013684 Lucia Jan 2012 A1
20120022945 Falkenborg et al. Jan 2012 A1
20120054284 Rakshit Mar 2012 A1
20120059853 Jagota Mar 2012 A1
20120066166 Curbera et al. Mar 2012 A1
20120078595 Balandin et al. Mar 2012 A1
20120079363 Folting et al. Mar 2012 A1
20120084117 Tavares et al. Apr 2012 A1
20120084184 Raleigh et al. Apr 2012 A1
20120084287 Lakshminarayan et al. Apr 2012 A1
20120123989 Yu et al. May 2012 A1
20120131512 Takeuchi et al. May 2012 A1
20120144335 Abeln et al. Jun 2012 A1
20120158527 Cannelongo et al. Jun 2012 A1
20120159362 Brown et al. Jun 2012 A1
20120173381 Smith Jul 2012 A1
20120188252 Law Jul 2012 A1
20120191446 Binsztok et al. Jul 2012 A1
20120197657 Prodanovic Aug 2012 A1
20120197660 Prodanovich Aug 2012 A1
20120215784 King et al. Aug 2012 A1
20120221553 Wittmer et al. Aug 2012 A1
20120226523 Weiss Sep 2012 A1
20120226590 Love et al. Sep 2012 A1
20120245976 Kumar et al. Sep 2012 A1
20120284670 Kashik et al. Nov 2012 A1
20120323888 Osann, Jr. Dec 2012 A1
20130006947 Akinyemi et al. Jan 2013 A1
20130016106 Yip et al. Jan 2013 A1
20130054306 Bhalla Feb 2013 A1
20130057551 Ebert et al. Mar 2013 A1
20130096988 Grossman et al. Apr 2013 A1
20130097130 Bingol et al. Apr 2013 A1
20130110746 Ahn May 2013 A1
20130124193 Holmberg May 2013 A1
20130132348 Garrod May 2013 A1
20130151305 Akinola et al. Jun 2013 A1
20130151453 Bhanot et al. Jun 2013 A1
20130166348 Scotto Jun 2013 A1
20130166480 Popescu et al. Jun 2013 A1
20130185245 Anderson Jul 2013 A1
20130185307 El-Yaniv et al. Jul 2013 A1
20130226318 Procyk Aug 2013 A1
20130226879 Talukder et al. Aug 2013 A1
20130226944 Baid et al. Aug 2013 A1
20130238616 Rose et al. Sep 2013 A1
20130246170 Gross et al. Sep 2013 A1
20130246316 Zhao et al. Sep 2013 A1
20130246537 Gaddala Sep 2013 A1
20130246597 Iizawa et al. Sep 2013 A1
20130208565 Castellanos et al. Oct 2013 A1
20130263019 Castellanos et al. Oct 2013 A1
20130268520 Fisher et al. Oct 2013 A1
20130282696 John et al. Oct 2013 A1
20130290825 Arndt et al. Oct 2013 A1
20130297619 Chandrasekaran et al. Nov 2013 A1
20130304770 Boero et al. Nov 2013 A1
20140006404 McGrew et al. Jan 2014 A1
20140012796 Petersen et al. Jan 2014 A1
20140040371 Gurevich et al. Feb 2014 A1
20140058914 Song et al. Feb 2014 A1
20140068487 Steiger et al. Mar 2014 A1
20140095509 Patton Apr 2014 A1
20140108074 Miller et al. Apr 2014 A1
20140108380 Gotz et al. Apr 2014 A1
20140108985 Scott et al. Apr 2014 A1
20140123279 Bishop et al. May 2014 A1
20140129936 Richards May 2014 A1
20140136285 Carvalho May 2014 A1
20140143009 Brice et al. May 2014 A1
20140156527 Grigg et al. Jun 2014 A1
20140157172 Peery et al. Jun 2014 A1
20140164502 Khodorenko et al. Jun 2014 A1
20140189536 Lange et al. Jul 2014 A1
20140195515 Baker et al. Jul 2014 A1
20140208281 Ming Jul 2014 A1
20140222521 Chait Aug 2014 A1
20140222793 Sadkin et al. Aug 2014 A1
20140229554 Grunin et al. Aug 2014 A1
20140244284 Smith Aug 2014 A1
20140344230 Krause et al. Nov 2014 A1
20140358829 Hurwitz Dec 2014 A1
20140366132 Stiansen et al. Dec 2014 A1
20150012509 Kirn Jan 2015 A1
20150026622 Roaldson et al. Jan 2015 A1
20150046481 Elliot Feb 2015 A1
20150073929 Psota et al. Mar 2015 A1
20150073954 Braff Mar 2015 A1
20150089353 Folkening Mar 2015 A1
20150095773 Gonsalves et al. Apr 2015 A1
20150100897 Sun et al. Apr 2015 A1
20150106170 Bonica Apr 2015 A1
20150106379 Elliot et al. Apr 2015 A1
20150134599 Banerjee et al. May 2015 A1
20150135256 Hoy et al. May 2015 A1
20150188872 White Jul 2015 A1
20150212663 Papale et al. Jul 2015 A1
20150242401 Liu Aug 2015 A1
20150254220 Burr et al. Sep 2015 A1
20150338233 Cervelli et al. Nov 2015 A1
20150379413 Robertson et al. Dec 2015 A1
20160004764 Chakerian et al. Jan 2016 A1
20160062555 Ward et al. Mar 2016 A1
Foreign Referenced Citations (32)
Number Date Country
2013251186 Nov 2015 AU
102546446 Jul 2012 CN
103167093 Jun 2013 CN
102054015 May 2014 CN
102014204827 Sep 2014 DE
102014204830 Sep 2014 DE
102014204834 Sep 2014 DE
102014213036 Jan 2015 DE
1672527 Jun 2006 EP
2487610 Aug 2012 EP
2778913 Sep 2014 EP
2778914 Sep 2014 EP
2858018 Apr 2015 EP
2869211 May 2015 EP
2889814 Jul 2015 EP
2892197 Jul 2015 EP
2963595 Jan 2016 EP
2993595 Mar 2016 EP
2366498 Mar 2002 GB
2513472 Oct 2014 GB
2513721 Nov 2014 GB
2517582 Feb 2015 GB
2013134 Jan 2015 NL
WO 2001025906 Apr 2001 WO
WO 2001088750 Nov 2001 WO
WO 20050116851 Dec 2005 WO
WO 2007133206 Nov 2007 WO
WO 2009051987 Apr 2009 WO
WO 2010030913 Mar 2010 WO
WO 2010030914 Mar 2010 WO
WO 2010030919 Mar 2010 WO
WO 2012119008 Sep 2012 WO
Non-Patent Literature Citations (194)
Entry
“A Real-World Problem of Matching Records,” Nov. 2006, <http://grupoweb.upf.es/bd-web/slides/ullman.pdf> pp. 1-16.
“A Tour of Pinboard,” <http://pinboard.in/tour> as printed May 15, 2014 in 6 pages.
Abbey, Kristen, “Review of Google Docs,” May 1, 2007, pp. 2.
Adams et al., “Worklets: A Service-Oriented Implementation of Dynamic Flexibility in Workflows,” R. Meersman, Z. Tari et al. (Eds.): OTM 2006, LNCS, 4275, pp. 291-308, 2006.
Amnet, “5 Great Tools for Visualizing Your Twitter Followers,” posted Aug. 4, 2010, http://www.amnetblog.com/component/content/article/115-5-grate-tools-for-visualizing-your-twitter-followers.html.
Appacts, “Smart Thinking for Super Apps,” <http://www.appacts.com> Printed Jul. 18, 2013 in 4 pages.
Apsalar, “Data Powered Mobile Advertising,” “Free Mobile App Analytics” and various analytics related screen shots <http://apsalar.com> Printed Jul. 18, 2013 in 8 pages.
Bluttman et al., “Excel Formulas and Functions for Dummies,” 2005, Wiley Publishing, Inc., pp. 280, 284-286.
Brandel, Mary, “Data Loss Prevention Dos and Don'ts,” <http://web.archive.org/web/20080724024847/http://www.csoonline.com/article/221272/Dos_and__Don_ts_for_Data_Loss_Prevention>, Oct. 10, 2007, pp. 5.
Capptain—Pilot Your Apps, <http://www.capptain.com> Printed Jul. 18, 2013 in 6 pages.
Celik, Tantek, “CSS Basic User Interface Module Level 3 (CSS3 UI),” Section 8 Resizing and Overflow, Jan. 17, 2012, retrieved from internet http://www.w3.org/TR/2012/WD-css3-ui-20120117/#resizing-amp-overflow retrieved on May 18, 2015.
Chaudhuri et al., “An Overview of Business Intelligence Technology,” Communications of the ACM, Aug. 2011, vol. 54, No. 8.
Cohn et al., “Semi-supervised Clustering with User Feedback,” Constrained Clustering: Advances in Algorithms, Theory, and Applications 4.1, 2003, pp. 17-32.
Conner, Nancy, “Google Apps: The Missing Manual,” May 1, 2008, pp. 15.
Countly Mobile Analytics, <http://count.ly/> Printed Jul. 18, 2013 in 9 pages.
Delicious, <http://delicious.com/> as printed May 15, 2014 in 1 page.
Distimo—App Analytics, <http://www.distimo.com/app-analytics> Printed Jul. 18, 2013 in 5 pages.
“E-MailRelay,” <http://web.archive.org/web/20080821175021/http://emailrelay.sourceforge.net/> Aug. 21, 2008, pp. 2.
Flurry Analytics, <http://www.flurry.com/> Printed Jul. 18, 2013 in 14 pages.
Galliford, Miles, “SnagIt Versus Free Screen Capture Software: Critical Tools for Website Owners,” <http://www.subhub.com/articles/free-screen-capture-software>, Mar. 27, 2008, pp. 11.
Google Analytics Official Website—Web Analytics & Reporting, <http://www.google.com/analytics.index.html> Printed Jul. 18, 2013 in 22 pages.
Gorr et al., “Crime Hot Spot Forecasting: Modeling and Comparative Evaluation,” Grant 98-IJ-CX-K005, May 6, 2002, 37 pages.
“GrabUp—What a Timesaver!” <http://atlchris.com/191/grabup/>, Aug. 11, 2008, pp. 3.
Gu et al., “Record Linkage: Current Practice and Future Directions,” Jan. 15, 2004, pp. 32.
Hansen et al. “Analyzing Social Media Networks with NodeXL: Insights from a Connected World”, Chapter 4, pp. 53-67 and Chapter 10, pp. 143-164, published Sep. 2010.
Hua et al., “A Multi-attribute Data Structure with Parallel Bloom Filters for Network Services” HiPC 2006, LNCS 4297, pp. 277-288, 2006.
“HunchLab: Heat Map and Kernel Density Calculation for Crime Analysis,” Azavea Journal, printed from www.azavea.com/blogs/newsletter/v4i4/kernel-density-capabilities-added-to-hunchlab/ on Sep. 9, 2014, 2 pages.
JetScreenshot.com, “Share Screenshots via Internet in Seconds,” <http://web.archive.org/web/20130807164204/http://www.jetscreenshot.com/>, Aug. 7, 2013, pp. 1.
Johnson, Maggie “Introduction to YACC and Bison”.
Johnson, Steve, “Access 2013 on demand,” Access 2013 on Demand, May 9, 2013, Que Publishing.
Keylines.com, “An Introduction to KeyLines and Network Visualization,” Mar. 2014, <http://keylines.com/wp-content/uploads/2014/03/KeyLines-White-Paper.pdf> downloaded May 12, 2014 in 8 pages.
Keylines.com, “KeyLines Datasheet,” Mar. 2014, <http://keylines.com/wp-content/uploads/2014/03/KeyLines-datasheet.pdf> downloaded May 12, 2014 in 2 pages.
Keylines.com, “Visualizing Threats: Improved Cyber Security Through Network Visualization,” Apr. 2014, <http://keylines.com/wp-content/uploads/2014/04/Visualizing-Threats1.pdf> downloaded May 12, 2014 in 10 pages.
Kontagent Mobile Analytics, <http://www.kontagent.com/> Printed Jul. 18, 2013 in 9 pages.
Kwout, <http://web.archive.org/web/20080905132448/http://www.kwout.com/> Sep. 5, 2008, pp. 2.
Lim et al., “Resolving Attribute Incompatibility in Database Integration: An Evidential Reasoning Approach,” Department of Computer Science, University of Minnesota, 1994, <http://reference.kfupm.edu.sa/content/r/e/resolving_attribute_incompatibility_in_d_531691.pdf> pp. 1-10.
Litwin et al., “Multidatabase Interoperability,” IEEE Computer, Dec. 1986, vol. 19, No. 12, http://www.lamsade.dauphine.fr/˜litwin/mdb-interoperability.pdf, pp. 10-18.
Localytics—Mobile App Marketing & Analytics, <http://www.localytics.com/> Printed Jul. 18, 2013 in 12 pages.
Manno et al., “Introducing Collaboration in Single-user Applications through the Centralized Control Architecture,” 2010, pp. 10.
Microsoft, “Registering an Application to a URI Scheme,” <http://msdn.microsoft.com/en-us/library/aa767914.aspx>, printed Apr. 4, 2009 in 4 pages.
Microsoft, “Using the Clipboard,” <http://msdn.microsoft.com/en-us/library/ms649016.aspx>, printed Jun. 8, 2009 in 20 pages.
Microsoft Windows, “Microsoft Windows Version 2002 Print Out 2,” 2002, pp. 1-6.
Mixpanel—Mobile Analytics, <https://mixpanel.com/> Printed Jul. 18, 2013 in 13 pages.
Nadeau et al., “A Survey of Named Entity Recognition and Classification,” Jan. 15, 2004, pp. 20.
Nin et al., “On the Use of Semantic Blocking Techniques for Data Cleansing and Integration,” 11th International Database Engineering and Applications Symposium, 2007, pp. 9.
Nitro, “Trick: How to Capture a Screenshot as PDF, Annotate, Then Share it,” <http://blog.nitropdf.com/2008/03/04/trick-how-to-capture-a-screenshot-as-pdf-annotate-it-then-share/>, Mar. 4, 2008, pp. 2.
Online Tech Tips, “Clip2Net—Share files, folders and screenshots easily,” <http://www.online-tech-tips.com/free-software-downloads/share-files-folders-screenshots/>, Apr. 2, 2008, pp. 5.
Open Web Analytics (OWA), <http://www.openwebanalytics.com/> Printed Jul. 19, 2013 in 5 pages.
O'Reilly.com, <http://oreilly.com/digitalmedia/2006/01/01/mac-os-x-screenshot-secrets.html> published Jan. 1, 2006 in 10 pages.
Piwik—Free Web Analytics Software. <http://piwik.org/> Printed Jul. 19, 2013 in18 pages.
Pythagoras Communications Ltd., “Microsoft CRM Duplicate Detection,” Sep. 13, 2011, https://www.youtube.com/watch?v=j-7Qis0D0Kc.
Qiang et al., “A Mutual-Information-Based Approach to Entity Reconciliation in Heterogeneous Databases,” Proceedings of 2008 International Conference on Computer Science & Software Engineering, IEEE Computer Society, New York, NY, Dec. 12-14, 2008, pp. 666-669.
“Refresh CSS Ellipsis When Resizing Container—Stack Overflow,” Jul. 31, 2013, retrieved from internet http://stackoverflow.com/questions/17964681/refresh-css-ellipsis-when-resizing-container, retrieved on May 18, 2015.
Sekine et al., “Definition, Dictionaries and Tagger for Extended Named Entity Hierarchy,” May 2004, pp. 1977-1980.
Schroder, Stan, “15 Ways to Create Website Screenshots,” <http://mashable.com/2007/08/24/web-screenshots/>, Aug. 24, 2007, pp. 2.
Sigrist et al., “PROSITE, a Protein Domain Database for Functional Characterization and Annotation,” Nucleic Acids Research 38.Suppl 1, 2010, pp. D161-D166.
SnagIt, “SnagIt Online Help Guide,” <http://download.techsmith.com/snagit/docs/onlinehelp/enu/snagit_help.pdf>, TechSmith Corp., Version 8.1, printed Feb. 7, 2007, pp. 284.
SnagIt, “SnagIt 8.1.0 Print Out,” Software release date Jun. 15, 2006, pp. 6.
SnagIt, “SnagIt 8.1.0 Print Out 2,” Software release date Jun. 15, 2006, pp. 1-3.
StatCounter—Free Invisible Web Tracker, Hit Counter and Web Stats, <http://statcounter.com/> Printed Jul. 19, 2013 in 17 pages.
TestFlight—Beta Testing on the Fly, <http://testflightapp.com/> Printed Jul. 18, 2013 in 3 pages.
trak.io, <http://trak.io/> printed Jul. 18, 2013 in 3 pages.
UserMetrix, <http://usermetrix.com/android-analytics> printed Jul. 18, 2013 in 3 pages.
Valentini et al., “Ensembles of Learning Machines,” M. Marinaro and R. Tagliaferri (Eds.): WIRN VIETRI 2002, LNCS 2486, pp. 3-20.
Vose et al., “Help File for ModelRisk Version 5,” 2007, Vose Software, pp. 349-353. [Uploaded in 2 Parts].
Wang et al., “Research on a Clustering Data De-Duplication Mechanism Based on Bloom Filter,” IEEE 2010, 5 pages.
Warren, Christina, “TUAW Faceoff: Screenshot apps on the firing line,” <http://www.tuaw.com/2008/05/05/tuaw-faceoff-screenshot-apps-on-the-firing-line/>, May 5, 2008, pp. 11.
Wikipedia, “Multimap,” Jan. 1, 2013, https://en.wikipedia.org/w/index.php?title=Multimap&oldid=530800748.
Zhao et al., “Entity Matching Across Heterogeneous Data Sources: An Approach Based on Constrained Cascade Generalization,” Data & Knowledge Engineering, vol. 66, No. 3, Sep. 2008, pp. 368-381.
Notice of Allowance for U.S. Appl. No. 14/265,637 dated Feb. 13, 2015.
Notice of Allowance for U.S. Appl. No. 14/479,863 dated Mar. 31, 2015.
Notice of Allowance for U.S. Appl. No. 14/304,741 dated Apr. 7, 2015.
Notice of Allowance for U.S. Appl. No. 14/225,084 dated May 4, 2015.
Notice of Allowance for U.S. Appl. No. 14/319,161 dated May 4, 2015.
Notice of Allowance for U.S. Appl. No. 14/323,935 dated Oct. 1, 2015.
Notice of Allowance for U.S. Appl. No. 14/552,336 dated Nov. 3, 2015.
Notice of Allowance for U.S. Appl. No. 12/556,307 dated Jan. 4, 2016.
Notice of Allowance for U.S. Appl. No. 14/746,671 dated Jan. 21, 2016.
Notice of Allowance for U.S. Appl. No. 14/094,418 dated Jan. 25, 2016.
Notice of Allowance for U.S. Appl. No. 14/858,647 dated Mar. 4, 2016.
Official Communication for U.S. Appl. No. 14/225,160 dated Jul. 29, 2014.
Official Communication for U.S. Appl. No. 14/304,741 dated Aug. 6, 2014.
Official Communication for U.S. Appl. No. 14/225,084 dated Sep. 2, 2014.
Official Communication for U.S. Appl. No. 14/225,006 dated Sep. 10, 2014.
Official Communication for U.S. Appl. No. 14/451,221 dated Oct. 21, 2014.
Official Communication for U.S. Appl. No. 14/225,160 dated Oct. 22, 2014.
Official Communication for U.S. Appl. No. 14/463,615 dated Nov. 13, 2014.
Official Communication for U.S. Appl. No. 13/827,491 dated Dec. 1, 2014.
Official Communication for U.S. Appl. No. 14/479,863 dated Dec. 26, 2014.
Official Communication for U.S. Appl. No. 14/319,161 dated Jan. 23, 2015.
Official Communication for U.S. Appl. No. 14/483,527 dated Jan. 28, 2015.
Official Communication for U.S. Appl. No. 14/463,615 dated Jan. 28, 2015.
Official Communication for U.S. Appl. No. 14/225,160 dated Feb. 11, 2015.
Official Communication for U.S. Appl. No. 14/225,084 dated Feb. 20, 2015.
Official Communication for U.S. Appl. No. 14/225,006 dated Feb. 27, 2015.
Official Communication for U.S. Appl. No. 14/304,741 dated Mar. 3, 2015.
Official Communication for U.S. Appl. No. 14/571,098 dated Mar. 11, 2015.
Official Communication for U.S. Appl. No. 13/669,274 dated May 6, 2015.
Official Communication for U.S. Appl. No. 14/225,160 dated May 20, 2015.
Official Communication for U.S. Appl. No. 14/463,615 dated May 21, 2015.
Official Communication for U.S. Appl. No. 12/556,307 dated Jun. 9, 2015.
Official Communication for U.S. Appl. No. 14/014,313 dated Jun. 18, 2015.
Official Communication for U.S. Appl. No. 13/827,491 dated Jun. 22, 2015.
Official Communication for U.S. Appl. No. 14/483,527 dated Jun. 22, 2015.
Official Communication for U.S. Appl. No. 12/556,321 dated Jul. 7, 2015.
Official Communication for U.S. Appl. No. 14/552,336 dated Jul. 20, 2015.
Official Communication for U.S. Appl. No. 14/676,621 dated Jul. 30, 2015.
Official Communication for U.S. Appl. No. 14/571,098 dated Aug. 5, 2015.
Official Communication for U.S. Appl. No. 14/225,160 dated Aug. 12, 2015.
Official Communication for U.S. Appl. No. 14/571,098 dated Aug. 24, 2015.
Official Communication for U.S. Appl. No. 13/669,274 dated Aug. 26, 2015.
Official Communication for U.S. Appl. No. 14/225,006 dated Sep. 2, 2015.
Official Communication for U.S. Appl. No. 14/631,633 dated Sep. 10, 2015.
Official Communication for U.S. Appl. No. 14/463,615 dated Sep. 10, 2015.
Official Communication for U.S. Appl. No. 14/225,084 dated Sep. 11, 2015.
Official Communication for U.S. Appl. No. 14/562,524 dated Sep. 14, 2015.
Official Communication for U.S. Appl. No. 14/813,749 dated Sep. 28, 2015.
Official Communication for U.S. Appl. No. 14/746,671 dated Sep. 28, 2015.
Official Communication for U.S. Appl. No. 14/141,252 dated Oct. 8, 2015.
Official Communication for U.S. Appl. No. 13/827,491 dated Oct. 9, 2015.
Official Communication for U.S. Appl. No. 14/483,527 dated Oct. 28, 2015.
Official Communication for U.S. Appl. No. 14/676,621 dated Oct. 29, 2015.
Official Communication for U.S. Appl. No. 14/571,098 dated Nov. 10, 2015.
Official Communication for U.S. Appl. No. 14/562,524 dated Nov. 10, 2015.
Official Communication for U.S. Appl. No. 14/746,671 dated Nov. 12, 2015.
Official Communication for U.S. Appl. No. 14/842,734 dated Nov. 19, 2015.
Official Communication for U.S. Appl. No. 14/306,138 dated Dec. 3, 2015.
Official Communication for U.S. Appl. No. 14/222,364 dated Dec. 9, 2015.
Official Communication for U.S. Appl. No. 14/463,615 dated Dec. 9, 2015.
Official Communication for U.S. Appl. No. 14/800,447 dated Dec. 10, 2015.
Official Communication for U.S. Appl. No. 14/225,006 dated Dec. 21, 2015.
Official Communication for U.S. Appl. No. 14/306,147 dated Dec. 24, 2015.
Official Communication for U.S. Appl. No. 14/306,138 dated Dec. 24, 2015.
Official Communication for U.S. Appl. No. 14/883,498 dated Dec. 24, 2015.
Official Communication for U.S. Appl. No. 14/225,084 dated Jan. 4, 2016.
Official Communication for U.S. Appl. No. 14/526,066 dated Jan. 21, 2016.
Official Communication for U.S. Appl. No. 14/225,160 dated Jan. 25, 2016.
Official Communication for U.S. Appl. No. 14/319,765 dated Feb. 1, 2016.
Official Communication for U.S. Appl. No. 14/929,584 dated Feb. 4, 2016.
Official Communication for U.S. Appl. No. 14/871,465 dated Feb. 9, 2016.
Official Communication for U.S. Appl. No. 14/741,256 dated Feb. 9, 2016.
Official Communication for U.S. Appl. No. 14/841,338 dated Feb. 18, 2016.
Official Communication for U.S. Appl. No. 14/715,834 dated Feb. 19, 2016.
Official Communication for U.S. Appl. No. 14/571,098 dated Feb. 23, 2016.
Official Communication for U.S. Appl. No. 12/556,321 dated Feb. 25, 2016.
Official Communication for U.S. Appl. No. 14/014,313 dated Feb. 26, 2016.
Official Communication for U.S. Appl. No. 12/556,307 dated Sep. 2, 2011.
Official Communication for U.S. Appl. No. 12/556,307 dated Feb. 13, 2012.
Official Communication for U.S. Appl. No. 12/556,307 dated Oct. 1, 2013.
Official Communication for U.S. Appl. No. 12/556,307 dated Mar. 14, 2014.
Notice of Acceptance for Australian Patent Application No. 2013251186 dated Nov. 6, 2015.
Notice of Acceptance for Australian Patent Application No. 2014203669 dated Jan. 21, 2016.
Official Communication for Australian Patent Application No. 2014201506 dated Feb. 27, 2015.
Official Communication for Australian Patent Application No. 2014201507 dated Feb. 27, 2015.
Official Communication for Australian Patent Application No. 2013251186 dated Mar. 12, 2015.
Official Communication for Australian Patent Application No. 2014203669 dated May 29, 2015.
Official Communication for Canadian Patent Application No. 2831660 dated Jun. 9, 2015.
European Search Report for European Patent Application No. 09813700.3 dated Apr. 3, 2014.
Extended European Search Report for European Patent Application No. 14158958.0 dated Jun. 3, 2014.
Extended European Search Report for European Patent Application No. 14158977.0 dated Jun. 10, 2014.
Official Communication for European Patent Application No. 14187996.5 dated Feb. 12, 2015.
Official Communication for European Patent Application No. 14158977.0 dated Apr. 16, 2015.
Official Communication for European Patent Application No. 14158958.0 dated Apr. 16, 2015.
Official Communication for European Patent Application No. 14200298.9 dated May 13, 2015.
Official Communication for European Patent Application No. 14191540.5 dated May 27, 2015.
Official Communication for European Patent Application No. 14200246.8 dated May 29, 2015.
Official Communication for European Patent Application No. 12181585.6 dated Sep. 4, 2015.
Official Communication for European Patent Application No. 15181419.1 dated Sep. 29, 2015.
Official Communication for European Patent Application No. 15184764.7 dated Dec. 14, 2015.
Official Communication for European Patent Application No. 15188106.7 dated Feb. 3, 2016.
Official Communication for European Patent Application No. 15190307.7 dated Feb. 19, 2016.
Official Communication for Great Britain Patent Application No. 1404499.4 dated Aug. 20, 2014.
Official Communication for Great Britain Patent Application No. 1404486.1 dated Aug. 27, 2014.
Official Communication for Great Britain Patent Application No. 1404489.5 dated Aug. 27, 2014.
Official Communication for Great Britain Patent Application No. 1404499.4 dated Sep. 29, 2014.
Official Communication for Great Britain Patent Application No. 1404489.5 dated Oct. 6, 2014.
Official Communication for Great Britain Patent Application No. 1411984.6 dated Dec. 22, 2014.
Official Communication for Great Britain Patent Application No. 1404486.1 dated May 21, 2015.
Official Communication for Great Britain Patent Application No. 1404489.5 dated May 21, 2015.
Official Communication for Great Britain Patent Application No. 1404499.4 dated Jun. 11, 2015.
Official Communication for Great Britain Patent Application No. 1411984.6 dated Jan. 8, 2016.
Official Communication for Netherlands Patent Application No. 2013134 dated Apr. 20, 2015.
Official Communication for Netherlands Patent Application No. 2011729 dated Aug. 13, 2015.
Official Communication for Netherlands Patents Application No. 2012421 dated Sep. 18, 2015.
Official Communication for Netherlands Patents Application No. 2012417 dated Sep. 18, 2015.
Official Communication for Netherlands Patent Application 2012438 dated Sep. 21, 2015.
Official Communication for New Zealand Patent Application No. 622389 dated Mar. 20, 2014.
Official Communication for New Zealand Patent Application No. 622404 dated Mar. 20, 2014.
Official Communication for New Zealand Patent Application No. 622439 dated Mar. 24, 2014.
Official Communication for New Zealand Patent Application No. 622473 dated Mar. 27, 2014.
Official Communication for New Zealand Patent Application No. 622513 dated Apr. 3, 2014.
Official Communication for New Zealand Patent Application No. 622439 dated Jun. 6, 2014.
Official Communication for New Zealand Patent Application No. 622473 dated Jun. 19, 2014.
Official Communication for New Zealand Patent Application No. 628161 dated Aug. 25, 2014.
Related Publications (1)
Number Date Country
20160179927 A1 Jun 2016 US
Provisional Applications (1)
Number Date Country
61801297 Mar 2013 US
Continuations (2)
Number Date Country
Parent 14552336 Nov 2014 US
Child 15053305 US
Parent 14099661 Dec 2013 US
Child 14552336 US