Graph Data Structure Edge Profiling in the MapReduce Computational Framework
A two-stage MapReduce job process profiles edges in large-scale data graphs to identify bridges, addressing the challenge of evaluating new data sources in identity graphs, enhancing trustworthiness and efficiency by assessing edge impacts on connectivity.
Patent Information
- Application Number
- JP2022575712
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-06-09
- Filing Date
- 2021-05-28
- Publication Date
- 2025-09-16
- Estimated Expiration
- 2041-05-28
AI Technical Summary
Existing data graph systems face challenges in determining the impact of new data sources on the trustworthiness and efficiency of identity graphs, as current evaluation methods rely on curated samples that may not represent the entire data set, and there is a need for efficient computation in large-scale environments with billions of nodes and trillions of edges.
Implementing a two-stage MapReduce job process on separate compute clusters to profile edges in a data graph, identifying bridges that connect subcomponents, using edge profiling and bridge discovery to assess the impact of removing edges on connectivity, thereby evaluating the value of data sources.
Enables efficient computation in large-scale data graphs to determine the impact of edges on connectivity, improving the trustworthiness and efficiency of identity graphs by identifying critical edges that maintain or break connectivity.
Smart Images

Figure 0007739340000001 
Figure 0007739340000002 
Figure 0007739340000003
Abstract
Description
[Technical Field]
[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 036,755, filed June 9, 2020, which is incorporated by reference as if set forth in its entirety herein. [Background technology]
[0002] Data about subjects can be stored in a graph data structure, or data graph. In a data graph, the nodes of the graph are data elements, and the edges are relationships between data elements. An identity graph is a special type of data graph used to store and access data about natural persons, their households, or businesses. However, data graphs may be used to store information about any type of subject. Edges in a data graph are used to link data related to the same subject. Nodes may contain various data associated with the same subject, such as name, address, email address, and phone number in the case of an identity graph. There may also be a "primary" node for a natural person or business linked to each associated touchpoint, and a household node associated with people who share a household. Using a data graph data structure, all data related to the same subject can be easily identified by following the edges connecting the associated nodes. This structure therefore enables a comprehensive understanding of each subject for which data is held, with that data easily and quickly accessible.
[0003] In a typical commercial identity graph maintained by a commercial data service provider, a substantial amount of the data contained within the graph is purchased or contracted from numerous data vendors. Because inaccuracies in data can actually decrease, rather than improve, the defensibility of the data in an identity graph, even if the amount of data increases, providers must carefully consider whether to include new data in their identity graph. Therefore, the trustworthiness or reliability of new candidate data sources considered for addition to a data graph is important but often very difficult to determine in advance. Historically, this has been determined largely based on the trustworthiness of the source itself, rather than by analyzing the actual data being added. Ideally, the expected impact of adding this new data on the effective reach and defensibility of the data authenticity of the resulting data graph would be known before the data is added.
[0004] Currently, data vendors often provide a sample of their data for evaluation to estimate the data's impact on the graph. However, this data is typically the data vendor's most highly curated records and therefore not truly representative of the entire data set. Data vendors rarely provide their entire data set for evaluation before purchase, and it is unlikely that they would provide low-quality data within the sample. This issue makes inferring the entire data set from the analysis of a highly curated sample questionable unless there is further available evidence that the sample behaves similarly to a random sampling of the data vendor's provided data. A related challenge is efficiently determining the impact of data sources already present in the data graph on efficient reach and contribution to defensible decisions within the overall entity resolution system. The cost of additional data sources may not be justified if they do not provide significantly additional reach based on data already stored in the data graph. This can occur, for example, when there is significant overlap between the high-quality data in the additional data source and data already present in the graph.
[0005] It would be desirable to develop systems and methods for assessing the value of particular data types or data sources on data graphs, including but not limited to identity graphs. Furthermore, given that data graphs may contain billions of nodes and trillions of edges, the solution must be computable within a business-reasonable timeframe.
[0006] Any document mentioned in this background section is not admitted to be prior art to the present invention. Summary of the Invention [Means for solving the problem]
[0007] The present invention is directed to a system and method for "profiling" edges in a data graph. Profiling determines the impact of specific types of edges on the data graph. In a specific implementation, the present invention generates a list of all edges contained within a single connected component in the graph, which can then be analyzed to detect bridges across connected subcomponents. To make the process computable in environments with trillions of edges, as is typical for large-scale commercial data graphs, the present invention can be implemented as two MapReduce jobs on separate compute clusters in this particular case. The first job is an edge profiling job, which is implemented as a map-only job. The second job reads the output of the first job and builds multiple in-memory data structures representing each connected component in the data graph. After the graph is created, it is traversed to find bridges, i.e., edges that are the only connection between nodes or groups of nodes, i.e., connected subcomponents. A bridge indicates that this edge is the only edge providing connectivity between connected subcomponents; removing the bridge means that there is no connectivity between connected subcomponents at all.
[0008] These and other features, objects and advantages of the present invention will be better understood from the following detailed description of the preferred embodiment taken in conjunction with the drawings and the appended claims. [Brief explanation of the drawings]
[0009] [Figure 1] FIG. 2 is a flow diagram of a process according to an embodiment of the present invention. [Figure 2] FIG. 10 illustrates an example of a connected component according to an embodiment of the present invention. [Figure 3] FIG. 1 illustrates an example of an edge profiling process according to an embodiment of the present invention. [Figure 4] FIG. 1 illustrates an example of a bridge discovery process according to an embodiment of the present invention. [Figure 5]FIG. 2 illustrates a set of graph relationships according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION
[0010] Before describing the present invention in further detail, it is to be understood that the invention is not limited to the particular embodiments described, and the terminology used to describe particular embodiments is for the purpose of describing those particular embodiments only, and is not intended to be limiting, as the scope of the present invention will be limited only by the claims.
[0011] An example implementation of the present invention can be described with reference to Figure 1. The solution is implemented by two Hadoop MapReduce jobs (Edge Profiling 14 and Bridge Discovery 16) on separate big data processing framework clusters. For example, the solution may be implemented on a Google Cloud Dataproc Hadoop cluster. Apache Hadoop is a collection of open-source software utilities that facilitates the use of networked computers, such as those in the cloud, to solve problems involving large amounts of data. Apache Hadoop operates on the MapReduce model, a distributed computing processing technique based on the Java programming language. The MapReduce algorithm includes two distinct possible tasks: a Map task and a Reduce task. Map is a filtering and sorting procedure that takes a set of data and transforms it into another set of data in which individual elements are broken down into tuples (i.e., key / value pairs). Reduce performs a summary operation on these tuples. Google Cloud Dataproc is a managed Hadoop service that enables cloud computing users to leverage a variety of data tools for batch processing, querying, streaming, and machine learning in a cluster computing environment. Google Cloud Dataproc offers custom virtual machine creation, auto-scaling to meet performance requirements, and automatic power-down of unnecessary resources.
[0012] To begin the process shown in FIG. 1, the input to the edge profiling job 14 in a particular implementation is a list of connected components 20, which are partitioned nodes marked by group identifiers. A connected component 20 is a set of connected nodes formed by tracing all connecting edges. In certain cases, business intelligence may be used to cut edges that connect too many nodes; these nodes are not connected through all edges. This process is performed using a big data processing framework that does not rely on sorting or shuffling data, such as a Hadoop Map-only job. The edge profiling 14 implementation analyzes each group individually to find the edges connecting each entity to other entities in the connected component 20. A key / value store, where the keys are edge types and the values are edge values, and another data store, where the keys are edge values and the values are sets of entity identifiers, are used. This edge profile 22 data structure is stored in the memory of each task running concurrently in cloud storage 10. For each entity processed in the group, each edge value of the entity row is looked up in the data structure by type. In instances where the objects are people, households, or businesses, various links may be used to uniquely link data about each object. So, for example, a lookup can be performed by address link (a unique identifier for a particular address) and then by value. The entity identifier is then appended to the unique collection of identifiers. After the entire group has been processed, the concurrent task outputs a nested, delimited format, first separated by edge type, then by edge value, and then by a list of all entity identifiers where the value was found and the source that provided that entity identifier (entity ID).
[0013] A second MapReduce job then reads the output of the first MapReduce job and builds multiple in-memory data structures representing each connected component in the data graph. Edge profiles 22 are used to build a data store of edge types and edge values versus entity IDs, and a data store of entity IDs versus edge types and edge values. For each list of latter values, each entity ID is looked up in the former data store. If multiple entity ID pairs result, they are deterministically ordered to avoid edge duplication and stored in the data store. This final data store forms the graph. To determine the impact of removing an edge, the edge is ignored when building the entity ID-to-entity ID graph from the two data stores.
[0014] After the graph is created, it is traversed using Breadth First Search (BFS) to find bridges using Bridge Finder 16. BFS is a search algorithm that traverses or explores a tree or graph data structure, starting from the root and examining all of the neighboring nodes at the current depth before moving to the nodes at the next depth level. BFS traverses the connected graph using edge profiles 22, declaring disconnected portions unreachable. BFS generates a list of entity IDs seen and compares it with the complete list of entity IDs in edge profile 22. If they are not the same set, the removed edge is a bridge, meaning that the two components in the original connected component were only connected by that edge. The resulting output is written to Bridges 24 in Cloud Storage 10.
[0015] In the example shown in Figure 1, two Hadoop MapReduce jobs run on large-scale Google Dataproc (managed Hadoop Cluster Service) clusters within a shared VPC (Virtual Private Cloud) network. Both Dataproc clusters run on "n1-standard-32" type instances, each with 32 virtual CPUs (i.e., one hyperthread on the available hardware platform, in this case, Intel Xeon Scalable Processors (Skylake)) and 120 GB of RAM. The Edge Profiling 14 cluster runs on 100 nodes, each with 512 GB of "pd-standard" (standard persistent) disk. Edge Profiling 14 is a map-only job; that is, it skips the expensive Hadoop MapReduce "shuffle" stage to reduce costs and avoids additional storage and network transfers, instead reading and writing directly over the network to GCS (Google Cloud Storage). It writes its output as several TB of plain text in the custom delimited format described above. The Bridge Discovery 16 cluster runs on 512 nodes with 128GB of disk. Bridge Discovery 16 is also a map-only job. The output, Bridge 24, is stored in Avro, an open-source binary data serialization format.
[0016] Figures 2 and 3 show the inputs and outputs of each stage in a simplified, illustrative implementation of the present invention that works with identity graphs. This example begins in Figure 2, where two sets of records, one for vendors A and one for vendor B, are provided to the identity graph. The graph is constructed by applying the connected components algorithm to generate two groups of connected entities in connected components 20. Specifically, vendor data records 30 are seen to consist of records 32 for vendor A and 34 for vendor B. Vendor A's record 32 contains a record and associated address for Mary Woods with ID number 1, as well as a record and address for Margaret Brown with ID number 2. Vendor B's record 34 contains a record and associated address for Bob Woods with ID number 3 (the same address as Mary Woods with ID number 1), and a record and email address for Margaret Brown with ID number 4 (the same person as vendor A's ID number 2).
[0017] The information is sorted based on which record each edge is present in; in the case of the identity graph, this information may include name, address, and email address. This results in a set of connected records 36. This connection creates two connected groups (shown as circles). The first connected group contains Mary Woods and Bob Woods because they share an address. The second connected group contains two records for the same person, Margaret Brown, but this process connected her address and email address.
[0018] Continuing the process, we now turn to Figure 3, where the edge profiling process 14 is then applied as described above, resulting in an edge profile 38. As can be seen in Figure 3, there is now a mapping from edges to entity IDs as key-value pairs. The names "Mary Woods" and "Bob Woods" each map to a single ID, ID numbers 1 and 3, respectively. However, their addresses map to both of these IDs. The name "Margaret Brown" maps to both ID numbers 2 and 4, while Margaret Brown's address maps only to ID number 2 and her email address maps only to ID number 4.
[0019] Moving now to FIG. 4, the bridge discovery process 16 is applied. The edge profiles obtained from edge profile 38 are analyzed in bridge block 40 to identify groups that are bridged by one type of edge. In this example, the name edges are removed, breaking the group on the right. Specifically, on the left, "Mary Woods" and "Bob Woods" have their edges removed, leaving only the connection between their common address and associated ID numbers 1 and 3, and on the right, only the connection between the address and its ID number 2, and between the email address and its ID number 4. From this result, bridge 24 can be written to cloud storage 10.
[0020] Figure 5 shows a more abstract view of the results obtained by identifying bridges in a data graph. In this example, the original data graph 50 on the left contains a single cluster, CC1. In this simplified case, there are three edges connecting three nodes, N1, N2, and N3, with each node connected by two of the edges. In this case, the edge connecting N2 to N3 is of a different type than the edges connecting N1 to N3 and N1 to N2. Removing this latter type of edge determines its impact on the connected components, resulting in a reduced data graph 52 and a new data graph 54. Circles are used to indicate two separate structures, CC1 and CC2, with only the edge between N2 and N3 remaining. For example, in the case of an identity graph for people, previously the graph assumed that the corresponding data related to a single person, but removing an edge can determine the impact of creating more distinct people. If we traverse the graph using BFS without using the removed edge type, we can see that removing this edge type results in two different connected components, CC1 and CC2, so we know that this edge type was indeed a bridge.
[0021] While the implementations described above provide specific hardware and software components used to implement the present invention in such implementations, the present invention is not limited thereto. Hadoop is used to process large amounts of data, but the present invention in alternative implementations may be adapted to other software frameworks. Google Cloud Platform is used to create the Hadoop cluster, but the present invention is similarly not limited thereto, as any cluster of a size sufficiently large for the data set may be used. Furthermore, different serialization formats may be used in place of Avro and custom delimited text formats.
[0022] The systems and methods described herein may be implemented by any combination of hardware and software in various embodiments. For example, in one embodiment, the systems and methods may be implemented by a computer system or collection of computer systems, each of which includes one or more processors executing program instructions stored on a computer-readable storage medium coupled to the processors. The program instructions may perform the functions described herein. The various systems and displays shown in the figures and described herein represent example implementations. The order of any method may be changed, and various elements may be added, modified, or omitted.
[0023] The computing systems or computing devices described herein may embody the hardware portion of a cloud computing system or a non-cloud computing system, forming part of various implementations of the present invention. The computing system may be any of various types of devices, including, but not limited to, a commodity server, a personal computer system, a desktop computer, a laptop or notebook computer, a mainframe computer system, a portable computer, a workstation, a network computer, a consumer device, an application server, a storage device, a telephone, a mobile phone, or other mobile computing device, or any type of computing node, computational node, computational device, and / or computing device in general. The computing system includes one or more processors (any of which may include multiple processing cores, and the processing cores may be single-threaded or multi-threaded) coupled to system memory via input / output (I / O) interfaces. The computing system may further include a network interface coupled to the I / O interface.
[0024] In various embodiments, the computer system may be a single-processor system including one processor or a multiprocessor system including multiple processors. The processor may be any suitable processor capable of executing computational instructions. For example, in various embodiments, the processor may be a general-purpose processor or an embedded processor implementing any of a variety of instruction set architectures. In a multiprocessor system, it is common, but not required, for each processor to implement the same instruction set. The computer system also includes one or more network communication devices (e.g., network interfaces) for communicating with other systems and / or components over a communications network, such as a local area network, a wide area network, or the Internet. For example, a client application executing on a computing device may use the network interface to communicate with a server application, which may execute on a single server or a cluster of servers implementing one or more of the components of the systems described herein in a cloud computing environment or a non-cloud computing environment implemented with various subsystems. In another example, an instance of a server application executing on a computer system may use the network interface to communicate with other instances of the application, which may execute on other computer systems.
[0025] A computing device also includes one or more persistent storage devices and / or one or more I / O devices. In various embodiments, persistent storage devices may correspond to disk drives, tape drives, solid-state memory, other mass storage devices, or any other persistent storage device. A computer system (or a distributed application or operating system running thereon) may store instructions and / or data to persistent storage devices as desired and retrieve the stored instructions and / or data as needed. For example, in some embodiments, a computer system may implement one or more nodes of a control plane or control system, and persistent storage may include SSDs attached to the server nodes. Multiple computer systems may share the same persistent storage device or may share a pool of persistent storage devices, with devices representing the same or different storage technologies within the pool.
[0026] A computer system includes one or more system memories capable of storing code / instructions and data accessible by a processor. System memory may include multiple levels of memory and memory caches, for example, in systems designed to shuffle information within memory based on access speed. Interleaving and swapping may extend to persistent storage in virtual memory implementations. Examples of technologies used to implement memory include static random access memory (RAM), dynamic RAM, read-only memory (ROM), nonvolatile memory, or flash memory. Similar to persistent storage, multiple computer systems may share the same system memory or may share a pool of system memory. The system memory or memories may contain program instructions executable by a processor that implement the routines described herein. In various embodiments, the program instructions may be coded in binary, assembly language, any interpreted language such as Java, a compiled language such as C / C++, or any combination thereof; the specific languages mentioned herein are merely examples. In some embodiments, the program instructions may implement multiple individual client nodes, server nodes, and / or other components.
[0027] In some implementations, the program instructions may include executable instructions that implement an operating system (not shown), which may be one of various operating systems such as UNIX, LINUX, Solaris, MacOS, or Microsoft Windows, or a mobile computing device operating system such as iOS. Any or all of the program instructions may be provided as a computer program product, or software, which may include a non-transitory computer-readable storage medium having instructions stored thereon, which may be used to program a computer system (or other electronic device) to perform a process according to various implementations. A non-transitory computer-readable storage medium may include any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). In general, a non-transitory computer-accessible medium may include a computer-readable storage medium or memory medium, such as a magnetic or optical medium, e.g., a disk or DVD / CD-ROM, coupled to a computer system via an I / O interface. A non-transitory computer-readable storage medium may include any volatile or non-volatile medium, such as RAM or ROM, that may be included in some embodiments of a computer system as system memory or another type of memory. In other implementations, program instructions may be communicated using optical, acoustic, or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.) transmitted over a communication medium, such as a network and / or a wired or wireless link, such as implemented via a network interface. The network interface may be used to interface with other devices, which may include other computer systems or any type of external electronic device.In general, system memory, persistent storage, and / or remote storage accessible by other devices over a network may store data blocks, replicas of data blocks, metadata associated with the data blocks and / or their state, database configuration information, and / or any other information usable in performing the routines described herein.
[0028] In particular implementations, the I / O interface may coordinate I / O traffic between the processor, system memory, and any peripheral devices in the system, including through a network interface or other peripheral interface. In some embodiments, the I / O interface may perform any necessary protocol, timing, or other data conversion to convert data signals from one component (e.g., system memory) into a format suitable for use by another component (e.g., processor). In some embodiments, the I / O interface may include support for devices attached via various types of peripheral buses, such as variations of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard. Also, in some embodiments, some or all of the functionality of the I / O interface, such as the interface to system memory, may be incorporated directly into the processor.
[0029] A network interface may enable data to be exchanged between the computer system and other devices connected to the network, such as other computer systems (which may implement one or more server nodes, primary nodes, read-only nodes of a storage system, and / or clients of the database system described herein). Additionally, an I / O interface may enable communication between the computer system and various I / O devices and / or remote storage. Input / output devices, in some embodiments, may include one or more display terminals, keyboards, keypads, touchpads, scanning devices, voice or optical recognition devices, or any other devices suitable for inputting or retrieving data with one or more computer systems. These may be directly connected to a particular computer system or may be connected across multiple computer systems in a cloud computing environment, grid computing environment, or other system including multiple computer systems. Multiple input / output devices may be in communication with the computer system or may be distributed across various nodes of a distributed system including the computer system. The user interfaces described herein may be viewed by a user using various types of display screens, which may include CRT displays, LCD displays, LED displays, and other display technologies. In some implementations, input may be received through a display using touchscreen technology, while in other implementations, input may be received through a keyboard, mouse, touchpad, or other input technology, or any combination of these technologies.
[0030] In some embodiments, similar input / output devices may be separate from the computer system and may interact with one or more nodes of a distributed system that includes the computer system via a wired or wireless connection, such as through a network interface. The network interface may commonly support one or more wireless networking protocols (e.g., Wi-Fi / IEEE 802.11 or another wireless networking standard). The network interface may support communication over any suitable wired or wireless general data network, such as, for example, other types of Ethernet networks. Furthermore, the network interface may support communication over a telecommunications / telephone network, such as an analog voice network or a digital fiber communications network, over a storage area network such as a Fibre Channel SAN, or over any other suitable type of network and / or protocol.
[0031] Any of the embodiments of the distributed system described herein, or any of their components, may be implemented as one or more network-based services in a cloud computing environment. For example, read-write and / or read-only nodes in the database tier of a database system may provide database services and / or other types of data storage services to clients as network-based services using the distributed storage system described herein. In some embodiments, the network-based services may be implemented by software and / or hardware systems designed to support interoperable machine-to-machine interaction over a network. A web service may have an interface described in a machine-processable format, such as Web Services Description Language (WSDL). Other systems may interact with the network-based service in a manner specified by the network-based service's interface description. For example, a network-based service may define various operations that other systems can invoke and a specific application programming interface (API) that other systems are expected to conform to when requesting the various operations.
[0032] In various embodiments, network-based services can be requested or invoked through the use of messages containing parameters and / or data associated with a network-based service request. Such messages may be formatted according to a particular markup language, such as Extensible Markup Language (XML), and / or may be encapsulated using a protocol, such as Simple Object Access Protocol (SOAP). To perform a network-based service request, a network-based service client can assemble a message containing the request and communicate the message to an addressable endpoint (e.g., a Uniform Resource Locator (URL)) corresponding to the web service using an Internet-based application-layer transport protocol, such as HyperText Transfer Protocol (HTTP). In some embodiments, network-based services may be implemented using Representational State Transfer (REST) technology rather than message-based technology. For example, a network-based service implemented according to REST technology can be invoked via parameters contained within an HTTP method, such as PUT, GET, or DELETE.
[0033] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although any methods and materials similar or equivalent to those described herein can also be used in the practice or testing of the present invention, a limited number of exemplary methods and materials are described herein. Those skilled in the art will recognize that many more modifications are possible without departing from the inventive concepts herein.
[0034] All terms used herein should be interpreted in the broadest possible manner consistent with the context. When groupings are used herein, it is intended that all individual members of the group and all possible combinations and subcombinations of the group are individually included in the disclosure. All documents cited herein are incorporated by reference to the extent not inconsistent with the disclosure herein. When a range is used herein, it is intended that all points within that range and all subranges within that range are included in the disclosure.
[0035] The present invention has been described with reference to certain preferred and alternative implementations, which are intended to be merely illustrative and not limiting on the full scope of the invention.
Claims
1. A method for multiple computing clusters operating within a MapReduce computing framework to perform edge profiling within a data graph, comprising: receiving a set of connected components, each of the connected components comprising a set of connected entities formed by traversing all connected edges in the set of connected components; utilizing a first cloud computing cluster to run an edge profile job to identify each edge connecting each entity in the set of connected components to other entities in the set of connected components, wherein running the edge profile job on the set of connected components is a map-only job without a shuffle stage; running a graph construction job that processes all edges resulting from the edge profile job to construct the graph; utilizing a second cloud computing cluster separate from the first cloud computing cluster to traverse the graph as a map-only job without a shuffle stage to find bridge edges in the graph, where a bridge edge is an edge that is the only edge connecting two subcomponents in the set of connected components; A method comprising:
2. The method of claim 1 , wherein the set of connected components comprises partitioned nodes marked by group identifiers.
3. The method of claim 2 , wherein the set of connected components is not connected through all edges.
4. 4. The method of claim 3, wherein the step of executing the edge profile job utilizes a first data store containing an edge type key for each edge.
5. 5. The method of claim 4, wherein the step of executing the edge profile job further utilizes a second data store containing matched edge values and corresponding sets of one or more entity identifiers.
6. 6. The method of claim 5, wherein executing the edge profile job further comprises: for each entity processed in a set of exploration groups, looking up each edge value in the data graph by type.
7. The method of claim 1, further comprising the step of outputting a plurality of edge profiles.
8. 8. The method of claim 7, wherein the plurality of edge profiles are in a nested delimited format, divided by edge type, then edge value, then edge identifier.
9. 9. The method of claim 8, wherein executing the graph construction job further comprises examining each edge to build an edge type and value to entity identifier data store containing edge type and edge value to entity identifier matches.
10. 10. The method of claim 9, wherein executing the graph construction job further comprises constructing an entity identifier to edge type and value data store containing entity identifier to edge type and value matches.
11. 11. The method of claim 10, wherein executing the graph construction job further comprises processing through the entity identifier versus edge type and value data store and looking up each value list by entity identifier in the edge type and value versus entity identifier data store.
12. 12. The method of claim 11, wherein the resulting set of entity identifier pairs is deterministically ordered to avoid duplicate edges and stored in the entity identifier vs. edge type and value data store.
13. The method of claim 12 , wherein traversing the graph to find bridge edges comprises performing a breadth-first search.
14. The method of claim 13 , wherein traversing the graph to discover bridge edges further comprises generating a list of entity identifiers seen during the breadth-first search.
15. 15. The method of claim 14, wherein scanning the graph to discover bridge edges further comprises comparing the list of seen entity identifiers with a complete list of entity identifiers to identify entities associated with bridge edges.
Citation Information
Patent Citations
Display controller and program
JP2015032298A
Fast and scalable connected component computation
US20150269230A1