# Patent

## Title
System watches for new paths to a target in a social graph

## Abstract

A system gathers information on important and influential people and builds a social graph. The information is organized based on this social graph and provided to users as a service. The system continually updates information in the social graph by crawling websites and other sources of information. When a user wants to keep updated with a person of the system, the user can establish a watch. The system processes the requirements of the user from the watch and alerts the user when the requirements are met.

## Background
BACKGROUND OF THE INVENTION
The present invention relates to the field of information management, and more specifically, to providing an information resource where the content is organized using a social graph.
In business, there is an adage: “the right ten minutes in front of the right person is worth more than a year at your desk.” This is because it is people that make things happen, and connecting with the right person can give you the resources, access or credibility you may need to advance your business. So it is important for a business person to remain updated on news and other events, that can help them gain the credibility or access they need with others.
Some social networks include FacebookTM and LinkedInTM. Trademarks indicated in this patent application are the property of their respective owners. If the world is a pyramid of people, with the “most important” being at the top, Facebook is the masses at the bottom and LinkedIn is the middle-level managers in the middle. However, there is no social network that caters to the world's most “influential people.” These people try to keep a low profile, do not promote themselves, and generally do not want the general public contacting through electronic means. This means that, even if these people have a profile on these sites, they will not spend time completing their profile in great detail and will not update their profiles with new information.
On-line services, libraries, and information resources are available to assist users to research people (often important and influential) that they want to make a connection to. The information is, however, typically presented in a flat format. Users may be able to setup alerts based on keywords (e.g., a news article alert), but these alerts do not show connections between a targeted individual and other people, and how the targeted individual might be connected to the user.
Therefore, there is a need to provide an information resource where information is also organized according to a social graph or social network, which allows users to automatically track selected people, especially influential people.
BRIEF SUMMARY OF THE INVENTION
A system gathers information on important and influential people and builds a social graph. The information is organized based on this social graph and provided to users as a service. The system continually updates information in the social graph by crawling websites and other sources of information. When a user wants to keep updated with a person of the system, the user can establish a watch. The system processes the requirements of the user from the watch and alerts the user when the requirements are met. For example, the system can detect changes (e.g., new connections, updated information, or other changes) are made for a person in the social graph. The social graph can then provide further context on the person useful to the user.
The system creates an extensive database and technology product that tracks the estimated one and a half million most important or influential people in the United States and in the world. In an implementation, the system is not a social network like Facebook or MySpace. Users or subscribers of the system are not asked to contribute any data, but the users can provide information about themselves so the system can determine any links they might have to the people being tracked. The system uses a vast array of publicly available data sources, both on-line and not on-line, to create deep and rich profiles on people—their business life, their personal life and who they know. This is not just who these people know in a business context, but who are their friends and others who have “real world” influence over them (and vice versa).
In additional to “important” people, there are some very key hubs of connectivity and influence. For instance, a well-respected divorce attorney who has developed very close relationships with his or her clients over the years, can potentially be a powerful connector in society. The information on who they know can be valuable to a user. In another example, relationships of a respected person running a well-respected nonprofit is tracked. This person may know large donors (who themselves are very important) to the nonprofit.
In an implementation, a method includes: providing a system presenting information on entities, where the entities are stored in a social graph structure using nodes, and edges between the nodes represent relationships between the entities; receiving a request to track an entity of the system, where the entity is represented as a first node in the social graph structure; receiving information at the system from a first information source, where the first information source is in a first format; extracting a first piece of information from the first information source; constructing an equivalent structure in the social graph structure of the system based on the first piece of information, where the equivalent structure includes a second node and a first and second edges in the social graph structure; and determining a path in the social graph structure starting with the target, where the path includes the equivalent structure.
In various implementations, the method includes where the constructing the equivalent structure further includes: determining that the first piece of information relates to a second entity not represented in the social graph structure; representing the first piece of information in the social graph structure as the second node; and linking the second node to the first node by the first edge, where the first edge includes the first piece of information. The method can include where the constructing the equivalent structure is after the receiving a request to track an entity of the system. The method can include where the first and second node are different. The method can include where the second node is a system-provided node. The method can include where the social graph structure is maintained by the system.
The method can include where the first piece of information relates to a fourth node of the social graph structure. The method can include where the fourth node is not connected to the first edge. The method can include assigning the first edge a first edge property type, where the first edge property type is specified in the first translated piece of information. The method can include where the first information source is external to the system. The method can include where the system is accessible by a user through a network. The method can include where the target is an organization. The method can include where the target is a person.
In an implementation, a method includes: receiving a request from a user to track an entity of a system, where the entity is represented as a first system-provided node in a social graph structure; receiving information at the system from a first information source, where the first information source is in a first format; extracting a first piece of information from the first information source; constructing an equivalent structure in the social graph structure of the system based on the first piece of information, where the equivalent structure includes a second system-provided node and a first and second system-provided edges in the social graph structure; and displaying to the user the equivalent structure.
The method can include where the equivalent structure does not include a ghost node. The method can include where the user is connected to the second-system provided node through a ghost edge in the social graph structure. The method can include where the displaying to the user includes the first piece of information.
In an implementation, a method includes: providing a system presenting information on entities, where the entities are stored in a social graph structure using nodes, and edges between the nodes represent relationships between the entities; receiving a request to track an entity of the system, where the entity is represented as a first ghost node in the social graph structure; receiving information at the system from a first information source, where the first information source is in a first format; extracting a first piece of information from the first information source; and constructing a equivalent structure in the social graph structure of the system based on the first piece of information, where the equivalent structure includes a second node and a first and second edges in the social graph structure where the constructing the equivalent structure further includes: representing the first piece of information in the social graph structure as the second node; and linking the second node to the first node by the first edge, where the first edge includes the first piece of information.
In various implementations, the method includes where the first node is at least two-degrees of separation away from the second node in the social graph structure. The method can include where the second node is a system-provided node.
Other objects, features, and advantages of the invention will become apparent upon consideration of the following detailed description and the accompanying drawings, in which like reference designations represent like features throughout the figures.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows a simplified block diagram of a distributed computer network within which a system of the invention can be implemented.
FIG. 2 shows a more detailed diagram of a computer system, client or server, which is used operate with the system.
FIG. 3 shows a system block diagram of a computer system used to execute a software implementation of the invention.
FIG. 4 shows a system diagram.
FIG. 5 shows a social graph with system-provided nodes connected by system-provided edges.
FIG. 6 shows the addition of a first user as a ghost node with ghost edges to the social graph.
FIG. 7 shows connections the first user can make to system-provided nodes of the social graph.
FIG. 8 shows the addition of a second user as another ghost node with a ghost edge to the social graph.
FIG. 9 shows connections the second user can make to system-provided nodes of the social nodes, and the first user's ghost node and edges are not available to the second user.
FIG. 10 shows sharing links in an organization.
FIG. 11A shows a general system flow for establishing watches in a social graph.
FIG. 11B shows another general system flow for establishing watches in the social graph.
FIG. 12 shows an example of relationships stored in the system.
FIG. 13 shows the example of relationships stored in the system with a new relationship.



DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows a simplified block diagram of a distributed computer network 100 incorporating an embodiment of the present invention. Computer network 100 includes a number of client systems 113, 116, and 119, and a server system 122 coupled to a communication network 124 via a number of communication links 128. Communication network 124 provides a mechanism for allowing the various components of distributed network 100 to communicate and exchange information with each other.
Communication network 124 may itself be comprised of many interconnected computer systems and communication links. Communication links 128 may be hardwire links, optical links, satellite or other wireless communications links, wave propagation links, or any other mechanisms for communication of information. Various communication protocols may be used to facilitate communication between the various systems shown in FIG. 1. These communication protocols may include TCP/IP, HTTP protocols, wireless application protocol (WAP), vendor-specific protocols, customized protocols, and others. While in one embodiment, communication network 124 is the Internet, in other embodiments, communication network 124 may be any suitable communication network including a local area network (LAN), a wide area network (WAN), a wireless network, a intranet, a private network, a public network, a switched network, and combinations of these, and the like. Distributed computer network 100 in FIG. 1 is merely illustrative of an embodiment incorporating the present invention and does not limit the scope of the invention as recited in the claims. One of ordinary skill in the art would recognize other variations, modifications, and alternatives. For example, more than one server system 122 may be connected to communication network 124. As another example, a number of client systems 113, 116, and 119 may be coupled to communication network 124 via an access provider (not shown) or via some other server system.
Client systems 113, 116, and 119 typically request information from a server computer system which provides the information. For this reason, servers typically have more computing and storage capacity than client systems. However, a particular computer system may act as both as a client or a server depending on whether the computer system is requesting or providing information. Additionally, although the invention has been described using a client-server environment, it should be apparent that the invention may also be embodied in a stand-alone computer system.
Server 122 is responsible for receiving information requests from client systems 113, 116, and 119, performing processing required to satisfy the requests, and for forwarding the results corresponding to the requests back to the requesting client system. The processing required to satisfy the request may be performed by server 122 or may alternatively be delegated to other servers connected to communication network 124.
Client systems 113, 116, and 119 enable users to access and query information stored by server system 122. In a specific embodiment, a “web browser” application executing on a client system enables users to select, access, retrieve, or query information stored by server system 122. Examples of web browsers include the Internet Explorer browser by Microsoft Corporation, the Firefox® browser by Mozilla Foundation, Chrome by Google Inc., WebKit and its variants, or others.
FIG. 2 shows a more detailed diagram of a computer system which may be a client or server. FIG. 2 shows a computer system 201 that includes a monitor 203, screen 205, cabinet 207, keyboard 209, and mouse 211. Mouse 211 may have one or more buttons such as mouse buttons 213. Cabinet 207 houses familiar computer components, some of which are not shown, such as a processor, memory, mass storage devices 217, and the like. Mass storage devices 217 may include mass disk drives, floppy disks, Iomega ZIPTM disks, USB removable storage, magnetic disks, fixed disks, hard disks, hard drives including both magnetic and flash storage in a single drive unit, CD-ROMs, recordable CDs, DVDs, DVD-R, DVD-RW, HD-DVD, Blu-ray DVD, flash and other nonvolatile solid-state storage, tape storage, reader, and other similar media, and combinations of these.
A computer-implemented or computer-executable version of the invention may be embodied using, stored on, or associated with computer-readable medium. A computer-readable medium may include any medium that participates in providing instructions to one or more processors for execution. Such a medium may take many forms including, but not limited to, nonvolatile, volatile, and transmission media. Nonvolatile media includes, for example, flash memory, or optical or magnetic disks. Volatile media includes static or dynamic memory, such as cache memory or RAM. Transmission media includes coaxial cables, copper wire, fiber optic lines, and wires arranged in a bus. Transmission media can also take the form of electromagnetic, radio frequency, acoustic, or light waves, such as those generated during radio wave and infrared data communications.
For example, a binary, machine-executable version, of the software of the present invention may be stored or reside in RAM or cache memory, or on mass storage device 217. The source code of the software of the present invention may also be stored or reside on mass storage device 217 (e.g., hard disk, magnetic disk, tape, or CD-ROM). As a further example, code of the invention may be transmitted via wires, radio waves, or through a network such as the Internet.
The computer system in FIG. 2 is representative of electronic computing systems with a computer processor or central processing unit (CPU). These include servers, desktop computers, workstations, notebook or laptop computers, tablets, nettops, netbooks, smartphones, set-top boxes, media players, and many others. These can also include iPads, iPhones, PDAs, or Android phones.
FIG. 3 shows a system block diagram of computer system 201 used to execute the software of the present invention. As in FIG. 2, computer system 201 includes monitor 203, keyboard 209, and mass storage devices 217. Computer system 201 further includes subsystems such as central processor 302, system memory 304, input/output (I/O) controller 306, display adapter 308, serial or universal serial bus (USB) port 312, network interface 318, and speaker 320. The invention may also be used with computer systems with additional or fewer subsystems. For example, a computer system could include more than one processor 302 (i.e., a multiprocessor system) or a system may include a cache memory. The processor may be a multicore processor, such as the Intel Core 2 Duo, Intel Pentium® D, AMD AthlonTM 64 X2 Dual-Core, AMD PhenomTM, Microsoft Xbox 360 central processing unit (CPU), and ARM architecture based processors (e.g., Nvida Tegra2, Qualcomm Snapdragon, Apple A4).
Arrows such as 322 represent the system bus architecture of computer system 201. However, these arrows are illustrative of any interconnection scheme serving to link the subsystems. For example, speaker 320 could be connected to the other subsystems through a port or have an internal direct connection to central processor 302. Computer system 201 shown in FIG. 2 is but an example of a computer system suitable for use with the present invention. Other configurations of subsystems suitable for use with the present invention will be readily apparent to one of ordinary skill in the art.
Computer software products may be written in any of various suitable programming languages, such as C, C++, C#, Pascal, Fortran, Perl, Matlab (from MathWorks, www.mathworks.com), SAS, SPSS, JavaScript, AJAX, Java, SQL, dBase, Gremlin, Blueprints, Python, PHP, or Closure. The computer software product may be an independent application with data input and data display modules. Alternatively, the computer software products may be classes that may be instantiated as distributed objects. The computer software products may also be component software such as Java Beans (from Sun Microsystems) or Enterprise Java Beans (EJB from Sun Microsystems). An operating system for the system may be one of the Microsoft Windows® family of operating systems (e.g., Windows 95, 98, Me, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows CE), Linux, UNIX, Sun OS, Ubuntu, or Macintosh OS X. Microsoft Windows is a trademark of Microsoft Corporation. Some mobile operating systems that can be used with an implementation of the invention include: Google Android, Chrome OS; Apple iOS4 or iOS5; Blackberry OS; Windows Phone 7.
Furthermore, the computer may be connected to a network and may interface to other computers using this network. For example, each computer in the network may perform part of the task of the many series of circuit simulation steps in parallel. Furthermore, the network may be an intranet, internet, or the Internet, among others. The network may be a wired network (e.g., using copper), telephone network (e.g., public switch telephone network or PSTN), packet network, an optical network (e.g., using optical fiber), or a wireless network, or any combination thereof. For example, data and other information may be passed between the computer and components (or steps) of a system of the invention using a wireless network using a protocol such as Wi-Fi (IEEE standards 802.11, 802.11a, 802.11b, 802.11e, 802.11g, 802.11i, and 802.11n, just to name a few examples). Other information transmission standards that can be used in a system of the invention include: Bluetooth, wireless USB, WiMAX, EDGE, EV-DO, GPRS, HSPA, LTE, UMTS, Edge, 2G, 4G, LTE. For example, signals from a computer may be transferred, at least in part, wirelessly to components or other computers.
The system maps the world of influence through a large database, which can be stored in a variety of ways. A specific technique is through a combination of an entity graph and associated SQL database, but other database types may be used. The database is at its core a mapping of entities and relationships between those entities. Note that this can be done with an array of other technologies, all of which can be used to achieve the same result. A technique and implementation of the system scales nearly infinitely to handle all the real-world ways that people know each other and facts about them.
The system product allows the paid user or subscriber to step into the created world and see how they fit in. Moreover it provides them with information that allows them to move further in to this world of influence. The system can also be supported, in part or fully, by advertisements.
This idea of a person being “powerful” is to be described in more detail (e.g., see quantitative discussion below), but in a simple instance you can say President Barack Obama is the most important person in the world, and thus calculate every single person's importance by how well they know him and how many people removed they are (or how many people they know in common with him and how well). In practicality, several “sign posts” can be erected in each industry that allows for this type of sector power ranking to fall out. Also, this can be cut in a different way to show someone's overall power in the world (for instance).
In an implementation, a sign posts algorithm is used by human operators. These human operators can “bump up” a weight of a particular relationship, or entity in the graph.
In an implementation, the sign posts can alter the distribution of energy/influence in a graph based on a mathematical distribution (e.g., Bayesian distribution, Priors algorithm). Sign posts not only bias the centrality algorithm for influence amongst the entire graph, they can also be applied to effect centrality calculations for a particular domain.
Additionally, by means of the weighted path algorithm, the system can show how influential someone is over an organization, creative work, event, or a series of events. The system can calculate the weights between any two nodes in the graph, independent of their type. This can have to do with how closely they are (or have been) affiliated with an organization, but can also be more nuanced. For instance, a person who is very close to three board members (but himself is not a board member) may be (or possibly could be) a key influencer of that organization. Influence is also transitive, for example: (1) CEO X controls Company Y, which in term owns a controlling stake in company Z; (2) X has transitive power over the CEO of company Z; and (3) CEO W controls company X, which in term owns a controlling stake in Company Y. We can determine that CEO of Company Y, CEO Z is very influenced by CEO W.
The system uses technology to collect this data, including pioneering innovative collection techniques (e.g., Internet, crawling, and filtering). Additionally, there can be a large team of people who “clean” this data. Given that the system is serving a very high-end clientele, the service needs to have very clean and precise data, which the human factor helps achieve.
FIG. 4 shows a block diagram of an implementation of a system of the invention. The system gathers information on entities, people or organizations, from on-line and off-line sources. The information is organized using a social graph (having nodes and edges), so that social relationships between the information can be more easily determined. The system provides this information, organized by social graph, as an information resource service to users. Users can use the system as a tool to identify and make better connections to other people or organizations. In a social graph of the system, entities of the social graph are connected by a variety of different edges representing different relationships between the entities. The information in the social graph is non-hierarchical (e.g., not organized as a tree). This means that, although one relationship may be more important than another similar relationship (e.g., a relationship of CEO to a company and another employee type to the company, a financial relationship where one is a greater economic value, or other types of relationships) the relationships are represented in the social graph similarly, without regard to ranking the weight of the relationship.
In an implementation, a server 401, having hardware such as described above, executes and stores software and data of the system. The server receives information from an information gathering module 409, which can be take information from on-line or non-on-line (or off-line) sources, or both.
For on-line sources, a crawler module can be used. Via the Internet 403, a crawler module 405 (e.g., Web crawler) gathers information for the system from on-line source and sends the collected information to the server. These on-line sources include Web pages and other unstructured information data sources.
The crawler module is a computer program that browses a network such as the Web or Internet in a methodical, automated manner in orderly fashion to gather desired information. The crawler can be embodied as ants, automatic indexers, Web crawlers, Web spiders, or Web robots. The sites the crawler retrieves information from can include public and closed sources. Some examples of closed sources include membership, closed-networks, and pay information services such as LexisNexis®, which is a registered trademark of LexisNexis.
For off-line sources 407, a research team can find relevant information and then put the information into electronic form for further handling by the system. Such off-line sources can include print (e.g., yellow pages, white pages, school yearbooks, old papers records that have not been put into electronic form) and other sources which are not available on-line. Some of these sources may be newspapers from countries other than the U.S. that do not have an on-line counterpart. Therefore, some of these sources may not be in English, and will be translated as needed (either by a translator (person) or by way of a machine translation) into English for inclusion into the system.
In an implementation, the information gathered (whether on-line or not on-line) is related to an entity, specific person or organization. The person or organization is one that the system tracks for its users. For example, the information may include all activities and news related to the specific person being tracked. These may include news about the person, stock purchases and sales, appearances as events, relationships with others, lawsuits, travel, identification of family members, new family members, contributions or donations to organizations, promotions, demotions, company changes, retirement, and others.
This information from information gathering module 409 is filtered by a filter module 412. The filter module 412 “cleans” the information by identifying the information relevant to the system, and discarding (e.g., removing or redacting) information that is not relevant or is of low relevance to the system. The filtering module may present a report of the proposed filtering to a person for approval or modification before being published live on the system.
After filtering, the information is transferred to an information processing block 415, which includes an update module 417 and analytics module 419. Update module 417 handles determining whether information in the system should be updated, since some of the information may be duplicative or not current. For information to be added to the system, the update module will handle performing updates (or request another module to do the update).
In the case the information is for a person already having a node in the social graph managed by the system, that node is updated. This node is a system-provided node because it is generated by the system, and not one which was created for or by a user or member of the system.
In the case the information is for a person that does not yet have a node, the update module will create the node (as a system-provided node) and create edges for the node as appropriate to link the new node to other system-provided nodes. Edges created by the system between the system-provided nodes are referred to as system-created edges.
Typically, the crawler module continually searches on-line sources for new information. It is desirable that an updates occur in real-time or soon as practicable, so that the information service offers timely information for its users or customers (e.g., 430A, 430B, and 430C). For any new information found, the update module updates the social graph of the system.
The analytics module 419 performs analytics on the information of the system, such as calculating influence index values for each node and other metrics based on the social graph. The analytics modules uses algorithms, and the resulting metrics (e.g., influence or power ranking) can be continually update as the nodes are updated. For example, analytics include calculating or updating a influence index value (or power ranking) for a person. Analytics is described further in U.S. provisional patent application 61/507,106, filed Jul. 12, 2011, which is incorporated by reference.
Another feature of the system is to allow users to set-up watches on people being tracked by the system. Then when users log into the system, their home page will show updates and new news on the watched people since they last time they logged in. E-mail or other messages (e.g., SMS) can be sent to the users to alert users of new news for the watched people.
The system stores information, including the social graph, in a storage block 420. This storage block may be implemented using hard drives of the server or across multiple servers (or network-attached storage (NAS) drives). Storage module 420 includes a graph manager 422 and a database 424 module.
The graph manager module manages the social graph of the system, adding, modifying, updating, or deleting information, nodes, and edges of the system. The social graph can be stored in a database structure. Each entry in the database can represent a node and include links, representing edges, to other entries or nodes. Other computer data structures can be used to implement a social graph of the system, including queues, stacks, pointers, arrays, linked lists, singly linked lists, doubly linked lists, and others, in any combination.
As example of graph manager operation, if a graph contains information about a person who is the chief executive officer (CEO) for a company A, but the person has resigned, the graph manager will update the CEO's system provided node to reflect the new information. The relationship of that person with company A may be removed or altered to show that the person is no longer company A's CEO. Also, information that was not previously in a graph can be added. For example, if the person from the previous example resigned from company A to take the CEO position for company B, the graph is updated to reflect this change. The system stores its information in the database, which can be access by the users of the system to see the updates.
The information of the system is provided as a service to users or subscribers 430A, 430B, and 430C. The users can pay a periodic charge (e.g., month, yearly, or other time period). The users can pay per use (e.g., a charge per search). The users can use the system for free, where the system is, e.g., ad supported or supported by revenue from other sources besides user fees. The system can have also have modules (not shown) for generating revenue by any one or combination of these revenue models.
In an implementation, the system has a Web interface so users can access the system via an Web browser at a client device. The client may be a mobile device such as a smartphone or tablet computer. Depending on what type of device the user 430A-430C is using, the user interface module 435 prepares and transmits a version (e.g., HTML or XML) suitable to the user's device. Also, the user interface module 435 prepares and selects what information to present. The system may have other interfaces, which can be used instead of or in combination with the Web interface, such as a dedicated application or app to connect to the service.
As discussed, the system organizes information about people or organizations using a social graph. By organizing information using a social graph, this can make it easier for viewers who access the information to determine the relationships and connections between the people (nodes) in the social graph. Using the social graph structure, a user can determine the degrees of separation between the nodes in the graph. A node can have any number of degrees of separation, one, two, three, four, five, six, seven, eight, nine, ten, or more. Generally, the more degrees of a separation one node is from another, the less strong the relationship is between those two nodes which represent two people. For example, the user can specify in a search term a number of degrees of separation in which to limit the search (e.g., search for two degrees or less) from a particular person, so that less strong connections can be omitted from the search results.
For a social graph, one degree of separation between two nodes means that the two nodes are connected via a single edge. Two degrees of separation between two nodes means that the two nodes are connected via two edges (passing through another node). Three degrees of separation between two nodes means that the two nodes are connected via three edges (passing through two other node). Therefore, n degrees of separation between two nodes means that the two nodes are connected via n edges (passing through n−1 other nodes).
Compared to, e.g., an HTML page or other data structure giving information on an individual, the social graph structure gives additional relationship information, which is very valuable in the context of a person trying to make relationship connections. With a social graph structure, an information page for a person of interest (person A), the user can see the people connected by a first-degree connection to person A. The person can connect via a link on person A's page to see another person, person B, who has a one-degree connection to person A. On the page for person B, the user will see all the one-degree connected people to person B, which includes person A.
With an HTML page, the relationship information is not inherent in the HTML structure. In fact, once one follows a link from one HTML page to another, the next HTML does not necessarily include a link back to the referring page. Information is lost when traversing from page to page. A social graph structure does not have this problem.
Although there can be any number of degrees of separation in a social graph, the system can allow the user to configure searches, calculations, and other operations to limit the numbers of degree of separate to a certain value m, an integer 1 or greater. By limiting the m, this can increase the speed of the system, since less information or nodes need to be considered. The user may want to leverage stronger relationships first, and such a user-configurable setting allows this.
As a further aspect of the system, after a user signs up and becomes a member or customer of the system. The system creates a node for the user, which is a ghost node in the system graph. This is in contrast to a system-provided node which is a node created by the system. Ghost nodes of the system are created for users of the system. Connections between ghost nodes and other nodes (e.g., system-provided nodes) are through ghost edges. A ghost node and its ghost edges is visible only to the user, and not others users of the system.
For the ghost node, the system allows the user to input information on the user. For example, this information can include people the users know, activities the user participates in, education of the user, and others information about the user. This user-input information can help the system identify connections to the system-provided nodes (people being tracked by the system). In an implementation, ghost nodes representing other users are invisible to users of the system. This can be done, for example, through encrypting ghost nodes of the system, which prevents users from accessing information on selected nodes (e.g., ghost nodes).
The user can then tag people the user knows, organizations the user is affiliated with, and things the user likes. The more relationships the user adds the more they become plugged into the sphere of influence. Given the information provided by the user, the application runs weighted path algorithms in order to show the user to whom they are connected and how.
The system does not allow the activity of this ghost node to effect the way information is generated for other users. Since the information added by the user is applicable to that one person, this node is treated as a “ghost node.” Any calculation that hits this part of the graph for any other user, realizes this is a ghost node, and the traversing at that part of the graph dies.
So, the system allows a person to enter (“virtually”) into the graph for the user's own use, morphing and defining it for the user's own purpose without impacting other users, or the general makeup of the system's data. The ghost node will not interact or interfere with other ghost nodes for other users of the system.
FIGS. 5-9 show a sample social graph of information for a system of the invention. FIG. 5 shows a sample master graph 501. This graph is maintained by graph manager 422 of the system. The nodes or circles (e.g., 506, 509, and 512) represent entities (people or organizations), and an edge or line (e.g., 514 and 517) between two nodes represent a connection between the two entities. In an implementation, the nodes can represent any entity (e.g., organization, people, organizations, creative works, events, products, awards, places, groups).
Nodes 506, 509, and 512 are system-provided nodes. Node 506 has a one-degree connection through edge 514 to node 509. Node 506 has a two-degree connection through edges 514 and 517 to node 512. Node 509 has one-degree connections to both nodes 506 and 512, through edges 514 and 517.
FIG. 6 shows a first user being added as a ghost node 601 to graph 501. Node 601 is shown in broken lines. This first user 601 can be representative of a subscriber (e.g., ghost node) in the system, while the other nodes in solid lines are representative of a system-provided person or entity. The first user 601 adds information on connections they have in the system. For example, the first user in FIG. 6 is associated or affiliated with two persons 610 and 512 in the master graph, as represented by the two ghost edges 627a and 627b. 
FIG. 7 shows relationships ghost node 601 has with other nodes of graph 501. Node 601 has first-degree connections to nodes 610 and 512 (see FIG. 6). The relationships are represented by connections 732a-732i (not shown in FIG. 6) are of varying degrees of separation, greater than one. Node 601 has n degrees of separation with these nodes, where n is a number of edges (ghost edges and system-provided edges) that exist between the nodes to be traversed. For example, node 601 has a two-degree connection to a system-provided node 747, passing through one ghost edge and one system-provided edge.
Greater than one-degree connections are the connections that the first user does not have directly (e.g., first degree of separation or one step), but has through additional people or nodes. With the information in social graph from, the first user can trace how this connection or route is established.
FIG. 8 shows a ghost node 801 for a second user 801 being added to graph 501. Node 801 is shown in broken lines. This second user has a single connection through a ghost edge 803 to node 747. The second user is able to see the connections in the curated system, but will not be able to traverse through a ghost edge or ghost node, or to see information on any other ghost nodes or ghost edges. In particular, node 601 and edge 627a and 627b will not be visible or accessible to the second user.
FIG. 9 shows a connection 901a between node 601 and node 801, as well as a connection 901b from node 801 to node 512. The second user 801 is also connected by edges 903a, 903b, 903c, and 903d to various nodes that are two or more degrees of separation from the second node 801. Connections 901a and 901b are shown using a dotted line. System provided nodes may be connected via ghost nodes and ghost edges. In this figure, nodes 610 and 512 are connected by ghost node 601.
However, in an implementation of a system of the invention, users of the system (e.g., represented by ghost node 801) will not be able to see connections between system-provided nodes (e.g., 610 and 512) that are due to ghost nodes (e.g., 601) and ghost edges (e.g., 627a and 627b) of other users.
Therefore, in the graph this figure, the second user (i.e., node 801) has no connection to system-provided node 610. To reach node 610, the two ghost edges to the first user 601 would need to be traversed, which an implementation of the system does not allow.
In other implementations, a ghost node (e.g., super ghost node) can make traversals through other ghost edges and ghost nodes to make a connection to other system-provided nodes. This can occur when two users share contacts and connections between each other. So, in this example, when first user 601 and second user 801 share connections (or part of the same entity or company), both gain additional connections (e.g., n-degree, n-step connections). For example, the second user gains a connection to node 610 through the route 901a to 627a. 
In an implementation, the system can have a limit for a number of degrees (i.e., d) for displaying or considering connections. As discuss, as the number of degrees increases, the strength of the connection or relationship between two nodes diminishes. Also, processing power by the system increases as d increases since many more nodes and edges are to be considered. Therefore, the limit for the number of degrees, d, can be system defined or user defined (discussed above). For example, d can be 2, 3, 4, 5, 6, 7, 8, 9, or another integer. Then, when requested to show the list of connected nodes, the report listing will show nodes restricted to within the degrees of separation as specified by the d value.
In an implementation, the graph database of the system has nodes (representing entities) and edges (representing relationships). The entities and relationships can have any number of properties. Each property for a particular entity or relationship, also has a value. Additionally the edges are directional, so that each edge implies an incoming and an outgoing node. The relationship one node has over another is different can have different meaning, but the one relationship is represented as one explicit fact. Nodes (or vertices) and edges also have weights (or rankings) that is determined by the type or category.
Some specific flows for determining a technique of the invention are presented below, but it should be understood that the invention is not limited to the specific flows and steps presented. A flow of the invention may have additional steps (not necessarily described in this application), different steps which replace some of the steps presented, fewer steps or a subset of the steps presented, or steps in a different order than presented, or any combination of these. Further, the steps in other implementations of the invention may not be exactly the same as the steps presented and may be modified or altered as appropriate for a particular application or based on the data.
In an implementation, every piece of information is attributed with a “type.” The type system is our ontology as information is broken down into a few major categories that organize different types of data. Entity Types classify each entity, or node in the graph at the top level. In an implementation, entity types include: People, Organizations, Creative Works, Events, Products, Awards, Places, and Transactions. Each Entity in the system can be categorized at very granular levels, and have multiple classifications, however, each entity must have exactly one top level type. Further information on these entity types follow:
(1) People. These are the natural persons in the system. Many of the other entities relate to one or more people in the system.
(2) Organization. For example, these are companies, nonprofits, associations, fraternities, or others.
(3) Events. The system can track event such as business transactions, conferences, parties, award ceremonies, or others. These events can have influential or important persons in attendance.
(4) Creative Works. Creative works are films, TV shows, paintings, books, or others. These entities are important because they create additional connections between entities.
(5) Awards. Awards can be creative work awards, ranked lists, hall of fame memberships, Honorary Degrees, or others. Awards can be given to people, organizations, and creative works. These are usually given (or granted) by an organization.
(6) Products. Products are produced by companies. Products can be dealt with both on an abstract level (where one entity represents the product), or on a per instance level. Stocks issued by a company, both public and private types of stock, are dealt with as products.
(7) Places. Places are a special type of entity in that these entities must be defined in geo-spatial terms. Places can be both administrative regions (e.g., cities, states, countries) as well as points or physical places (e.g., restaurants, museums, offices)
(8) Transactions. Transactions are ownership events that involve two or more companies, and any number of people.
In an implementation, an organization is a collection of multiple people. These people can be also be represented as nodes, separate from the organization. For example, company A has a CEO who is person B. Company A can be represented as a company node, while person B can be represented as a person node. Person B will also be connected to company A. A benefit of using organizations is that it helps the system arrange its data and possibly decrease the amount of nodes in the system. For example, some organization can have many members or people. Using the example given previously, if there is a person C who is an entry-level associate at company A, the system does not need to create a person node to represent them. Instead, person C can be associated with the organization without a separate person node. This simplifies and reduces the information the system needs to store. Also, grouping by organizations assists a user of the system in making searches by allowing powerful queries based on an organization. For example, the system can tell a user not only who is in an organization, but whether another person is associated with the organization. For example, for a popular golf club (an organization), the user can find out not only who is a member of the club, but others associated with the club (e.g., people who make donations to the club, is a spouse of a member of the club). This allows the user to quickly expand their connections, by asking who is connected to an organization.
In an implementation, each entity can have [n] number of classifications. Entity classifications describe and categorize entities at a granular level. For example, Bill Gates is an {Entrepreneur}, {Technologist} and {Philanthropist}. Entity classifications are stored in a tree structure, the root of the tree converges at the master entity types, as discussed above.
In an implementation, a 0-1 Score of a particular entity's influence over another is calculated on the fly with our weighted path algorithm, as discussed in further detail below. This score may be the result of a function based on: (1) Predicate (Type of Relationship); (2) Time (e.g., Recency, Length of time); (3) Amount of Incoming links of the same predicate, or (4) An array of Attribute value pairs are based on the system's ontology and can modify the weight-in/weight-out of the edge. This includes all of the paths throughout the graph that link those two entities together.
In another implementation, the ontology of the system is represented by two separate Ontologies which are referenced throughout the system's data set in a number of concepts. These type systems are, for example, Concepts Graph, and Type System. The Type System is represented by six separate graphs which have different applications and different significance: Entity Classifications, Entity Attributes, Relationship Types (e.g., Edge Labels), and Relationship Attributes, Entity Attribute Values, Relationship Attribute Values.
Entities are categorized in the “Entity Classifications” partition of the type system. Each value in the entity classification can be linked to any entity in the graph via the “Type Of” Edge. Each vertex in the graph will be linked to at least one classification.
In an implementation, the system links interests as concepts in the concepts ontology. This allows us to connect people having similar interests while not having the exact same interest. For example, we could connect the node for “Biking” to the node of “Running” with a “Related Interest” edge.
In an implementation, the direction of a particular relationship type or edge label is defined in the “Relationship Types” system. A directed edge has a name and an inverse name, and different values for the default in/out weights. A bi directional edge has a NULL inverse name and has the same value for weight-in/weight-out. Some relationships, such as a friendship, has no direction, since there are no inverses. A direction is useful for representing other relationships, such as a father or employee, since directed relationships have are inverses. A fixed weight is used to calculate all relationships of a specific type. A fixed weight is associated with the inverse relationship (if is directed).
In an implementation, influence is determined in two ways by two master algorithms. These algorithms determine the influence that two entities in the graph have over each other and one entity's influence in the world. This includes:
1. A person's influence in the world (their centrality in the graph).
2. A person's influence over a particular person.
3. A person's influence in a particular sector.
4. A person's influence over other types of entities (e.g., person, organization, creative work, field of study).
5. A person's influence over a concept (e.g., the most influential people in Mathematics).
In an implementation, a centrality algorithm is used. The centrality algorithm determines a person's overall influence in the world, which is a function of their influence over the people they know, and how powerful those people are. The more powerful people (quantity and quality) you know (the better), the more powerful you are. The more powerful those people are, the more powerful you are. The more powerful people the user knows, the more powerful those people are, and the closer the user knows those people, the more powerful you are.
In yet another implementation, the centrality algorithm uses sign posts. This is a sort of bias on the centrality algorithm to operate with the assumption that this entity has a higher or lower weight then it would usually have if the algorithm were to be run with no bias. When the weight of one entity starts off with a bias, it effects the weights of all other entities and ripples through the entire graph. In order to ground the weighting mechanism of the system, and to get started in calculating influence, the system uses some Educated guesses (e.g., initial values) for some people. Having that weight allows us to calculate the weights of the entities surrounding them in the graph. Sign posts are not only used to bias the overall influence on one person in the master graph, they can also be used to bias their influence in a sector (or concept). In an implementation, sign posts are used in a concept by attaching edges from relevant nodes to a concept node. A bias can be applied to a node connected to the concept. Once the bias is applied, the effects of the bias can propagate through to other nodes connected to the concept (e.g., adding weights to edges connected to the concept).
For example, providing President Barack Obama an influence of 1.0. It is fair to say that anyone who has influence over President Obama, has influence in the world. Since we know this weight, we can start to calculate the influence of the people that surround him and others by how closely they are associated with him. See further discussion of signposts elsewhere in the application.
The system calculates the distribution of energy (or weight) in the graph but instead of having each node start with the same value, the system staggers it by hard coding influence metrics for a particular set of entities. This allows the function to feed off of itself.
In an implementation, weighted path algorithms are used to determine influence. For example, person-to-person influence can be determined according to: a particular relationship type (a predefined constant); the amount of direct and indirect relationships between two nodes; the influence of those incoming and outgoing links and time (duration and recency). In a simple form of the weighted path algorithm, two people who are on the subcommittees of the board for two public companies boards (e.g., small groups that are important and meet often) for the last five years (such that they have many meetings and discussions over time) have a stronger relationship that two people that were on a large (50 person) nonprofit board 10 years ago.
In yet another implementation, a person's influence over a non person entity can be determined. This non-person entity can vary from a company to a film. Influence is calculated per instance based on, for example, relationship type (e.g., Board Member), time, size of company, or others with influence. Additionally, there is the concept of influence over others with influence over the organization).
In an implementation to gather overall influence of a person, the summation (a simplified version of the function used as an example) of the relationship instances or paths between two nodes is calculated. Meaning if someone is the founder, and the CEO, those two different relationships have different weights independently. The summation of these two relationships, or edges, gives us the overall influence that one entity has over another.
In an implementation, an entity can have pass through (or indirect) influence to another entity. An example is that a person who has influence over Obama means that person is influential in the world. Another example is a private equity executive's influence over one of the firm's portfolio companies. In a specific example, a person A who the CEO of a well-known private equity firm has a certain influence over the firm. Since the equity firm owns a portion of a company B, person A has influence over company B and the CEO of company B. This means that person A has some quantifiable influence over company B. This is transitive (or pass through) influence.
In another example, consider the following relationships: Dave is Chris' friend and Dave is Chris' boss. Dave has a certain amount of influence over Chris, and Chris has a certain amount of influence over Dave (albeit less). In the first relationship, the relationship has no direction, that is “friend” means the same thing if you where to swap out Dave and Chris in that sentence. In the second relationship, the relationship implies a particular direction. The same predicate (or relationship type) is not the same when the entities are swapped. The system uses the direction of a relationship to derive influence metrics. Other metrics includes size of the group, length, seriousness (board subcommittee for instance), recency, and duration. This can be extended to companies. A CEO has a certain amount of influence over a company, and most certainly the company has influence over him.
In an implementation, the weighted path algorithm calculates the weighted paths between two nodes. Those two nodes could be the combination of any two types of node that exists in the ontology. For example, these can be:
(1) [Person]-to-[Person],
(2) [Person]-to-[Organization],
(3) [Person]-to-[Industry], or
(4) [Person]-to-[Concept].
In an implementation, one user's node is a ghost to every other node in the system. Thus, a piece of data added by a user will have no relevance to another user. However, for groups of users, say a small venture capital firm, the system allows a group of people to enter their contacts that are shared. This means that instead of just one node being the center of the universe for a user, the group of people in the firm are at the center. The value of the product increases tremendously by this sharing because it allows the users to plug-in to the database with a larger core. By interacting with friends and colleagues the connection possibilities increase dramatically. The application has generated a set of distinct paths for two users, and by sharing contacts, now each user can see, and interact with each other's path to power.
FIG. 10 shows sharing links in a sample organization (or group). The organization 1030 has members A, B, C, D, and E. In the organization 1030, member C is connected to member B by link 1033a and member E by link 1033b. Although part of the same organization 1030, member A and D and not connected to the other members of the organization (e.g., B, C, E). However, member D is connected to an entity F by link 1035. This entity F is not a member of the organization 1030. Thus, members A, B, C, and E gain a connection to F by links 1037a, 1037b, 1037c, and 1037d. These can be first or second degree connections. For example, link 1037a is a first connection from A to F or a second degree connection from A to the organization 1030 to F.
In an implementation, some nodes of the system are system-provided nodes. These nodes and their connections are created and updated by the system. Other persons (e.g., users or subscribers) do not create these nodes. In an implementation, administrators of the system update and provide the nodes. These administrators are persons trusted by the system to create and curate the data, so that there is a high level of quality (e.g., accuracy of data, timeliness of data) for information stored in the system. In an implementation, none of the administrators of the system are represented as a system-provided node.
In another implementation, a system-provided node is a node created by a person other than the person represented by the node. For example, if Person A is a person represented by a system-provided node, a person other than Person A creates the node. In another example, where an Organization A is represented by a system-provided node, a person who is not a member of Organization A creates the node. In an implementation, the user is denied access to editing a system-provided node.
In an implementation, a person who is represented by a system-provided node is prevented from editing the system-provided node representing themselves. In another implementation, a person who is represented by a system-provided node is allowed to edit a user node representing themselves.
In an implementation, each system-provided node has at least one connection (or edge). For example, each person node will be connected to at least one other node (e.g., another person, organization, entity). This is because system-provided nodes represent persons or entities with influence, and influence is determined in reference to two things (e.g., influence of one person over another person, influence of one person over an organization). So, a system-provided node without any connections would have very low influence, and would not be tracked by the system.
In an implementation, analytics of the system are used on a directed graph structure. The analytics can be based on various algorithms. FIGS. 10A-10D show flow diagrams of a methodology for determining or calculating analytics (e.g., determining influence) for a social graph.
This application incorporates by reference U.S. patent application Ser. Nos. 13/224,110, 13/224,117, 13/224,119, 13/224,138, and 13/224,149, all filed Sep. 1, 2011; Ser. No. 13/225,377 and 13/225,380, both filed Sep. 2, 2011; U.S. patent application Ser. Nos. 13/236,602, 13/236,606, and 13/236,617, all filed Sep. 19, 2011; U.S. patent application Ser. Nos. 13/532,653, 13/532,663, and 13/532,672, all filed Jun. 25, 2012; and U.S. patent application Ser. Nos. 13/738,233, 13/738,242, 13/738,248, 13/738,255, 13/738,264, and 13/738,273, all filed Jan. 10, 2013.
FIG. 11A shows a general system flow 1102 for establishing watches in a social graph. In a step 1104, the system provides a graph with system-provided nodes. The system includes information on entities (e.g., persons, organizations, interests, clubs, and others). These entities are arranged in a social graph structure, where edges in the social graph structure represent relationships between the nodes. These edges can represent semantic relationships between nodes. For example, for two person nodes, an edge can represent that a first node is a child of the second node. In another example, for an organization node and a person node, an edge can represent the person node is the founder of the organization. In an implementation, the system contains both system-provided and ghost nodes.
In a step 1106, the system receives a request to track an entity of the system. The request can be from a user of the system, on any of the entities tracked by the system. For example, the user can request to track a person, organization, interest, area of interest, or other entity of the system. In a step 1108, the system receives information at the system from a first information source. The first information source can be any of the information sources crawled by the system for new information (e.g., Web sites, scanned documents, or other information sources). In a step 1110, the system constructs an equivalent structure in the social graph structure of the system based on the first piece of information. In an implementation, the system translates the information from the first information source into a format of the social graph. For example, a node, an edge, or any combination of these are modified or added to the social graph. In a step 1112, the system determines a path in the social graph structure starting with the target. The path includes the equivalent structure. For example, the information from the first information source is relevant to establishing a path from the target to the user. This path can be displayed to the user. The display can include information on the elements of the path (e.g., nodes, edges), that can assist the user in making connections with the target.
FIG. 11B shows another general system flow 1115 for establishing watches in the social graph. For example, this flow provides more information on how to create an equivalent structure as discussed in step 1110. In a step 1117, the system constructs a second node and a first and second edges in the social graph structure. The second node can represent an entity described in a piece of information. In a step 1119, the system represents the first piece of information in the social graph structure as the second node. In a step 1121, the system links the second node to a first tracked node by the first edge, where the first edge includes the first piece of information represented in the social graph structure. The first and second nodes can be at most two-degrees of separation in the social graph.
In an implementation, the system uses two algorithms. The first algorithm is the weighted path algorithm. This is used to calculate the weight one node has over another node in the graph. The second algorithm is the centrality algorithm. This is used to calculate the Eigen vector of a node in the graph with respect to the entire graph, or in an ontologically defined sub-section of the graph.
In an implementation, the length of the path between two nodes are the degree of separation between the nodes. For example, in a graph where nodes A and B are connected, A and B are connected through a first degree of separation. In a graph where nodes A to B to C are connected, A and B are connected through a first degree of separation, and A and C are connected through a second degree of separation. Although various degrees of separation are discussed, a system of the invention can be implemented allowing any number of degrees of separation, one, two, three, four, five, six, seven, eight, nine, ten, or more. A system implementation has one degree of separation.
Some specific flows for determining a technique of the invention are presented in this application, but it should be understood that the invention is not limited to the specific flows and steps presented. A flow of the invention may have additional steps (not necessarily described in this application), different steps which replace some of the steps presented, fewer steps or a subset of the steps presented, or steps in a different order than presented, or any combination of these. Further, the steps in other implementations of the invention may not be exactly the same as the steps presented and may be modified or altered as appropriate for a particular application or based on the data.
A feature of the system is that it provides users with the most valuable and accurate information as possible. For example, a user may want to tag an entity tracked by the system as a “Target.” The user may or may not actually know the Target in real-life, but wants to be able to follow the Target's news for different ways the user can connect with the Target. For example, a user can sign up for the system, and is stored as a ghost node in the system. If they want to know a Person A (or any type of entity tracked by the system), the user can request the system determine what links they have to Person A, whom is represented in the system as a system-provided node.
In an implementation, the system creates equivalent structures to represent information in a social graph that is equivalent to real-world information. For example, to represent the relationship A is a parent of B in the social graph, an edge is created between nodes representing A and B. The edge has an edge type corresponding to being a parent. The edge can also be directional, to reflect that the node for A is parent of B, but not the other way around.
In an implementation, the system provides multiple options to receive updates on a target. Three example options to receive updates on a target are discussed following:
(1) A piece of news is tagged by the system to the target. For example, the system continually crawls the Internet or other information sources, to determine whether new information on an entity already tracked by the system is available. When the system has added a new piece of information on the target, the system will notify the user.
(2) There is a new connection (or path) from the user to the target (e.g., connection found in research or during a data ingestion the system uncovers up new paths to the target).
(3) The user adds new connections to themselves in the system, which uncovers new paths to the target.
Options (1) and (2) are discussed further in reference to FIGS. 11 and 12. FIG. 12 shows an example of relationships stored in the system. In this figure, a user is connected to entities A, B, C, and D (through C). These entities can be of any type of entity tracked by the system (e.g., person, organization, company, non-profit, or other entity tracked by the system). The system tags an article (e.g., news article, or other information source) to a Target, with a particular piece of information about the Target. The user now has more context about the Target, and information that he or she could use to reach out to the Target. This is shown by the target, connected to E, F, and G (through E) by new connections 1301, 1303, and 1305. At this first time, there is no connection (or path) in the system from the user to the target. In this example, a new edge that did not previously exist, 1303 is established.
FIG. 13 shows the example of relationships stored in the system with a new relationship. At a second time, the system has added a new connection. Here, the system was able to determine that entity A is connected to entity F. The system can now notify the User that there is a path to the Target (e.g., path from User to A, A to F, and F to Target). With this information, the user is better prepared to reach out to the Target. In an implementation, the new connection can also reveal connections to other items stored in the system before the new connection is made. For example, a new connection can reveal that an entity is related to a piece of news, corporation, relationships, or any other type of entity stored in the system.
In an implementation, watches established by users of the system access the graph database, but not an information database of the system. The information database of the system stores data on entities of the system. So, when the graph database is determined to satisfy a watch, the system accesses equivalent entities stored in the information database, to retrieve and show information relevant to the watch (e.g., what the connection satisfying the watch is, how the entities satisfying the watch are related, relevant information on the entities satisfying the watch, and other information).
In an implementation, a user can designate a watch between two entities is only satisfied when a specified relationship type is met. Since the system is flexible in the kinds of relationships it stores, users can select which relationship types entered into the system are met before the watch is satisfied. In an example, if a user knows that a first entity is already connected to a second entity by an employment relationship, the user can request the system to notify that a watch is satisfied when any other relationship is established in the system. This means that, although there is a connection (e.g., an edge) between the first and second entities in the system (e.g., employment relationship), the system's watches can be relationship type sensitive. In another example, if a user knows that a first entity is already connected to a second entity by a relationship, the user can request the system to notify that a watch is satisfied when another relationship is established between the entities.
A watch can be satisfied in a variety of methods using the system. For example, the system can detect new edges created in the social graph, information is added to an edge, information is removed from an edge, information is updated to an edge, or other changes.
In an implementation, the system uses one or more methods to notify a user about news on a target. Some sample notification methods are having an e-mail sent to the user's personal e-mail box, having an e-mail notification sent to the user's mailbox in the system, appear on a homepage of the system when the user logs on, appear on the Target's profile page when the user views their page, or other methods.
This description of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications. This description will enable others skilled in the art to best utilize and practice the invention in various embodiments and with various modifications as are suited to a particular use. The scope of the invention is defined by the following claims.

## Claims

1. A method comprising:
providing a system presenting information on entities, wherein the entities are stored in a social graph structure comprising:
a plurality of nodes of a first type, referred to as system-provided nodes, wherein system-provided nodes represent entities tracked by the system and include information gathered by the system;
a plurality of nodes of a second type, different from the first type of node and referred to as ghost nodes, wherein ghost nodes represent entities created for users of the system and include information specified by users of the system;
a plurality of edges of a first type, referred to as system-provided edges, wherein system-provided edges represent relationships categorized by at least one concept category of the system between two different system-provided nodes of the social graph structure; and
a plurality of edges of a second type, different from the first type of edge and referred to as ghost edges, wherein each ghost edges represent relationships between a system-provided node and a ghost node of the social graph structure, and information on the relationships are specified by users of the system;
maintaining the social graph structure comprising:
allowing, by a processor, the plurality of system-provided nodes of the social graph structure to be directly coupled to other system-provided nodes by system-provided edges, wherein system-provided edges include information gathered by the system;
allowing, by a processor, the plurality of ghost nodes of the social graph structure to be directly coupled to system-provided nodes by ghost edges, wherein ghost edges include information specified by users of the system;
disallowing, by a processor, the plurality of ghost nodes from being directly coupled to other ghost nodes or to system-provided nodes using system-provided edges; and
disallowing, by a processor, the plurality of system-provided nodes from being directly coupled to other system-provided nodes using ghost edges;
receiving an online request from a user to track a target comprising an entity tracked by the system, wherein the entity is represented as a first system-provided node in the social graph structure;
receiving information at the system from a first information source, wherein the first information source is in a first format, and the first information source is collected by crawling Web sources;
extracting, by a processor, a first piece of information from the first information source;
constructing, by a processor, an equivalent structure in the social graph structure of the system based on the first piece of information, wherein the equivalent structure includes a second system-provided node and a first and second system-provided edges in the social graph structure;
determining, by a processor, a path in the social graph structure starting with the target, wherein the path includes the equivalent structure; and
in response to request by the first user to track the target, updating a home page of the user with an alert to notify the user of the collected first piece of information, which has been determined to be related to the target by way of the equivalent structure.

2. The method of claim 1 wherein the constructing the equivalent structure further comprises:
determining that the first piece of information relates to a second entity not represented in the social graph structure;
representing the first piece of information in the social graph structure as the system-provided second node; and
linking the second system-provided node to the first system-provided node by the first system-provided edge, wherein the first system-provided edge includes the first piece of information.

3. The method of claim 1 wherein the constructing the equivalent structure is after the receiving a request to track an entity of the system.

4. The method of claim 1 wherein the first and second system-provided nodes are different.

5. The method of claim 1 wherein the social graph structure is maintained by the system.

6. The method of claim 1 wherein the first piece of information relates to a fourth node of the social graph structure.

7. The method of claim 6 wherein the fourth node is not connected to the first system-provided edge.

8. The method of claim 1 assigning the first system-provided edge a first edge property type, wherein the first edge property type is specified in the first translated piece of information.

9. The method of claim 1 wherein the first information source is external to the system.

10. The method of claim 1 wherein the system is accessible by a user through a network.

11. The method of claim 1 wherein the target is an organization.

12. The method of claim 1 wherein the target is a person.

13. The method of claim 1 further comprising:
receiving unfiltered information from an on-line source in the first format, wherein the first format comprises text data.

14. The method of claim 1 further comprising:
retrieving a plurality of ontology data structures, wherein each ontology data structure of the plurality of ontology data structures include a method of representing a relationship in an unstructured data format to a data format of the social graph structure, wherein the data format of the social graph structure comprises entities represented by at least one system-provided edge and at least two system-provided nodes; and
selecting ontology data structures from the plurality of ontology data structures to represent the first piece of information from the first information source.

15. The method of claim 14 wherein each ontology data structure of the plurality of ontology data does not include representing information in the social graph structure as ghost nodes or edges.

16. The method of claim 1 wherein the maintaining the social graph structure further comprises
disallowing system-provided edges to be directly coupled to a ghost node.

17. The method of claim 1 wherein the maintaining the social graph structure further comprises
disallowing ghost edges to be coupled to more than one system-provided node.

18. The method of claim 1 further comprising
disallowing system-provided edges from directly coupling two ghost nodes.

19. The method of claim 1 further comprising
disallowing ghost edges from directly coupling two ghost nodes or two system-provided nodes.

20. The method of claim 1 wherein each ghost edge of the plurality of ghost edges of the social graph structure is directly coupled to at least one ghost node.

21. The method of claim 1 wherein each ghost node of the plurality of ghost nodes of the social graph structure is at least two degrees of separation from every other ghost node of the social graph structure.

22. The method of claim 1 wherein a first user is allowed to modify information associated with a first ghost node and disallowed to modify information associated with a second node.

23. The method of claim 1 wherein the entity represented as the first system-provided node is also represented as a first ghost node in the social graph structure.

24. A method comprising:
receiving a request from a user to track an entity of a system, wherein the entity is represented as a first system-provided node in a social graph structure and the social graph structure comprises:
a plurality of nodes of a first type, referred to as system-provided nodes, wherein system-provided nodes represent entities tracked by the system and include information gathered by the system;
a plurality of nodes of a second type, different from the first type of node and referred to as ghost nodes, wherein ghost nodes represent entities created for users of the system and include information specified by users of the system;
a plurality of edges of a first type, referred to as system-provided edges, wherein system-provided edges represent relationships categorized by at least one concept category of the system between two different system-provided nodes of the social graph structure; and
a plurality of edges of a second type, different from the first type of edge and referred to as ghost edges, wherein each ghost edges represent relationships between a system-provided node and a ghost node of the social graph structure, and information on the relationships are specified by users of the system;
maintaining the social graph structure comprising:
allowing the plurality of system-provided nodes of the social graph structure to be directly coupled to other system-provided nodes by system-provided edges, wherein system-provided edges include information gathered by the system;
allowing the plurality of ghost nodes of the social graph structure to be directly coupled to system-provided nodes by ghost edges, wherein ghost edges include information specified by users of the system;
disallowing, by a processor, the plurality of ghost nodes from being directly coupled to other ghost nodes or to system-provided nodes using system-provided edges; and
disallowing, by a processor, the plurality of system-provided nodes from being directly coupled to other system-provided nodes using ghost edges;
representing, by a processor, the user as a first ghost node of the social graph structure;
receiving information at the system from a first information source, wherein the first information source is in a first format, and the first information source is collected by crawling Web sources;
extracting, by a processor, a first piece of information from the first information source;
constructing, by a processor, an equivalent structure in the social graph structure of the system based on the first piece of information, wherein the equivalent structure includes a second system-provided node and a first and second system-provided edges in the social graph structure;
in response to request by the first user to track the target, updating a home page of the user with an alert to notify the user of the collected first piece of information, which has been determined to be related to the target by way of the equivalent structure; and
providing an option, accessible via the home page, for the user to select to view the equivalent structure.

25. The method of claim 24 wherein the equivalent structure does not include a ghost node.

26. The method of claim 24 wherein the user is connected to the second-system provided node through a ghost edge in the social graph structure.

27. The method of claim 24 wherein the displaying to the user includes the first piece of information.

28. The method of claim 24 wherein the first system-provided edge includes information accessible by the user but prevented from specifying information on the first system-provided edge to be stored in the social graph structure.

29. The method of claim 28 wherein the user is allowed to specify information relating to a first ghost node in the social graph structure representing the first user, but disallowed access to information relating to a second ghost node in the social graph structure.

30. A method comprising:
providing a system presenting information on entities, wherein the entities are stored in a social graph structure comprising:
a plurality of nodes of a first type, referred to as system-provided nodes, wherein system-provided nodes represent entities tracked by the system and include information gathered by the system;
a plurality of nodes of a second type, different from the first type of node and referred to as ghost nodes, wherein ghost nodes represent entities created for users of the system and include information specified by users of the system;
a plurality of edges of a first type, referred to as system-provided edges, wherein system-provided edges represent relationships categorized by at least one concept category of the system between two different system-provided nodes of the social graph structure; and
a plurality of edges of a second type, different from the first type of edge and referred to as ghost edges, wherein each ghost edges represent relationships between a system-provided node and a ghost node of the social graph structure, and information on the relationships are specified by users of the system;
maintaining the social graph structure comprising:
allowing, by a processor, the plurality of system-provided nodes of the social graph structure to be directly coupled to other system-provided nodes by system-provided edges, wherein system-provided edges include information gathered by the system;
allowing, by a processor, the plurality of ghost nodes of the social graph structure to be directly coupled to system-provided nodes by ghost edges, wherein ghost edges include information specified by users of the system;
disallowing, by a processor, the plurality of ghost nodes from being directly coupled to other ghost nodes or to system-provided nodes using system-provided edges; and
disallowing, by a processor, the plurality of system-provided nodes from being directly coupled to other system-provided nodes using ghost edges;
receiving a request to track an entity of the system, wherein the entity is represented as a first node in the social graph structure;
receiving information at the system from a first information source, wherein the first information source is in a first format, and the first information source is collected by crawling Web sources;
extracting, by a processor, a first piece of information from the first information source; and
constructing, by a processor, a equivalent structure in the social graph structure of the system based on the first piece of information, wherein the equivalent structure includes a second node and a first and second edges in the social graph structure and wherein the constructing the equivalent structure further comprises:
representing, by a processor, the first piece of information in the social graph structure as the second node;
linking, by a processor, the second node to the first node by the first edge, wherein the first edge includes the first piece of information; and
in response to request by the first user to track the entity, updating a home page of the user with an alert to notify the user of the collected first piece of information, which has been determined to be related to the entity by way of the equivalent structure.

31. The method of claim 30 wherein the first node is at least two-degrees of separation away from the second node in the social graph structure.

32. The method of claim 30 wherein the second node is a system-provided node.