Tagging users of a social networking system in an experience in a user's user profile

A user profile for a user of a social networking system may include experiences, such as work, educational, travel, and interests. The social networking system provides a profile page for a user's user profile that allows the user to tag other users as being involved in or otherwise associated with the user's experiences. Once another user is tagged in an experience, a corresponding tag is added to the tagged user's user profile, and that experience is added as well if not already included in the profile. Tagging users in experiences allows a viewer to see connections between experiences of users of the social networking system and promotes more detailed user profiles that contain experiences.

BACKGROUND

This invention relates generally to social networking, and in particular to providing a user profile for a user of a social networking system that includes experiences in which other social networking system users can be tagged.

Social networking systems have become prevalent in recent years because they provide a useful environment in which users can connect to and communicate with other users. A variety of different types of social networking systems exist that provide mechanisms allowing users to interact within their social networks.

One common characteristic of social networking systems is providing a user profile where the user can provide information about the user's experiences, such as educational experiences, work experiences, and the like. Typically the information is organized into linear information, intended for viewing only, provides few if any common information between users, and actions are not taken upon the experiences themselves. However, richer information about the user experiences is left out. For example, that a user worked at a specific employer for a certain number of years provides little information about what the user did at the employer, what was his progression through the company, etc.

In addition, many connections between users are missed by such strictly informational user profiles. Many user who are connections of each others have shared experiences in common, but those shared experiences between users are absent from the user profiles unless they are compared side by side for the users. For example, a first user's profile page may list that he worked at Company X during the time period 2000-2006. A second user's profile lists that she worked at Company X overlapping with that time period, 1999-2005. At best typical profiles list a job title. However, looking at the information on the first user's profile, the viewer would have no way of knowing that the second user worked with the first user on a project spanning the years 2001-2003 by viewing either profile alone, and likely might not even recognize that the two users had any common employer.

SUMMARY

To enable a social networking system to provide richer experience information viewable by other users, embodiments of the invention provide a mechanism for tagging other users in user profile experiences. Using information maintained in user profiles, user experiences are included in a display of a user profile for a user of a social networking system. A user may add to an experience on his user profile and may add an indication that another user was associated with the experience, the indicating providing a “tag” linking the other user to the tagged experience. An interface is provided for editing the individual experiences, including adding experiences at any level, and tagging other users. Once another user is tagged in a user's experience, the corresponding tag is added to the tagged user's profile, and the experience is added as well, if not already included in it. Tagged users can remove tags if desired.

Accordingly, embodiments of the invention allow the social networking system to provide a user profile that includes user experiences in which other users may be tagged as associated with the experience.

DETAILED DESCRIPTION

Overview of a Social Networking System Architecture

FIG. 1is a network diagram of one embodiment of a system100for tagging users of a social networking system130in user profile experiences. The system100includes one or more user devices110connected via a network120to the social networking system130. The social networking system130provides a platform, or backbone, in one embodiment which other systems may use to provide social networking services and functionalities to users across the Internet.

A user device110comprises one or more computing devices that can receive input from a user and can transmit and receive data via the network120. For example, the user device110may be a desktop computer, a laptop computer, a smart phone, a personal digital assistant (PDAs) or any other device including computing functionality and data communication capabilities. The user device110is configured to communicate with the social networking system130via the network120, which may comprise any combination of local area and/or wide area networks, using both wired and wireless communication systems. The user device110displays content from the social networking system130.

The social networking system130comprises one or more computing devices storing a social network, or a social graph, comprising a plurality of users and providing users of the social network with the ability to communicate and interact with other users of the social network. In use, users join the social networking system130and then add connections to a number of other users of the social networking system130to whom they desire to be connected. As used herein, the term “friend” refers to any other user of the social networking system130to whom a user has formed a connection, association, or relationship via the social networking system130. Connections may be added explicitly by a user or may be automatically created by the social networking system130based on common characteristics of the users (e.g., users who are alumni of the same educational institution). For example, a first user specifically selects a particular other user to be a friend. Connections in the social networking system130are usually in both directions, but need not be, so the terms “user” and “friend” depend on the frame of reference. Connections between users of the social networking system130are usually bilateral, or “mutual,” but connections may also be unilateral, or “one-way.” For example, if Bob and Joe are both users of the social networking system130and connected to each other, Bob and Joe are each other's connections. If, on the other hand, Bob wishes to connect to Joe to view data communicated to the social networking system by Joe but Joe does not wish to form a mutual connection, a unilateral connection may be established. The connection between users may be a direct connection; however, some embodiments of a social networking system allow the connection to be indirect via one or more levels of connections or degrees or separation. Using a social graph, therefore, a social networking system may keep track of many different types of objects and the interactions and connections among those objects, thereby maintaining an extremely rich store of socially relevant information.

In addition to establishing and maintaining connections between users and allowing interactions between users, the social networking system130provides users with the ability to take actions on various types of items supported by the social networking system130. These items may include groups or networks (where “networks” here refer not to physical communication networks, but rather social networks of people, entities, and concepts) to which users of the social networking system may belong, events or calendar entries in which a user might be interested, computer-based applications that a user may use via the social networking system130, transactions that allow users to buy or sell items via the service, and interactions with advertisements that a user may perform on or off the social networking system.

These are just a few examples of the items upon which a user may act on a social networking system, and many others are possible. A user may interact with anything that is capable of being represented in the social networking system130.

The social networking system130is also capable of linking a variety of entities. For example, the social networking system130enables users to interact with each other as well as receive content from third-parties.

The social networking system130also includes user-generated content, which enhances a user's interactions with the social networking system130. User-generated content may include anything a user can add, upload, send, or “post,” to the social networking system130. For example, a user communicates posts to the social networking system130from a user device100. Posts may include data such as status updates or other textual data, location information, photos, videos, links, music or other similar data and/or media. The user-added content then also can be the subject of additional user content, e.g., a user can comment on a link or post, “like,” a photo, link, or post, and can tag others in a photo. In another example, users may tag other users in experiences on the user profiles as described herein. Content may also be added to the social networking system130by a third-party through a “communication channel,” such as a newsfeed or stream. Content “items” represent single pieces of content that are represented as objects in the social networking system130. In this way, users of the social networking system130are encouraged to communicate with each other by posting text and content items of various types of media through various communication channels, increasing the interaction of users with each other and increasing the frequency with which users interact with the social networking system130.

FIG. 2is a diagram of one embodiment of a social networking system130, which is implemented as a website. In other embodiments, the social networking system130may provide social networking functionalities for other types of systems, such as native applications that run on the user devices110. The embodiment of a social networking website130shown byFIG. 2includes a web server210, an action logger215, a user interface module225, an action log230, an authorization module235, a user profile store240, and a connection store245. In other embodiments, the social networking website130may include additional, fewer, or different modules for various applications. Conventional components such as network interfaces, security mechanisms, load balancers, failover servers, management and network operations consoles, and the like are not shown so as to not obscure the details of the system.

The web server210links the social networking system to one or more user devices110via the network120. The web server210serves web pages, as well as other web-related content, such as Java, Flash, XML, and so forth. The web server210may include a mail server or other messaging functionality for receiving and routing messages between the social networking system130and one or more user devices110. The messages can be instant messages, queued messages (e.g., email), text and SMS messages, or any other suitable messaging format.

As described above in conjunction withFIG. 1, the social networking system130comprises a computing system that allows users to communicate or otherwise interact with each other and access content as described herein. The social networking system130stores user profiles describing the users of a social network in a user profile store240. The user profiles include biographic, demographic, and other types of descriptive information. The user profile store240includes various information about user experiences in various categories, e.g., educational experiences, experiences, travel experiences, activity experiences, etc. The user profile store240may include all the experience information described herein, including information about the nesting of a hierarchy of experiences, other users tagged in an experience, and experiences in which the user was tagged on the profiles of other users.

The user profile store240contains data structures with fields suitable for describing a user's profile. When a new object of a particular type is created, the social networking system130initializes a new data structure, i.e., a “node” of the corresponding type, assigns a unique object identifier to it, and begins to add data to the object as needed. This might occur, for example, when a user becomes a user of the social networking system130, the social networking system130generates a new instance of a user profile in the user profile store240, assigns a unique identifier to the user profile, and begins to populate the fields of the user profile with information provided by the user.

In addition, the user profile store240may include data structures suitable for describing a user's demographic data, behavioral data, and other social data. Demographic data typically includes data about the user, such as age, gender, location, etc., e.g., as included in the user's profile. Behavioral data typically includes information about the user's activities within the social networking system130, such as specific actions (posts, likes, comments, etc.), activity levels, usage statistics, etc. Other social data comprises information about the user from within the social networking system130that is not strictly demographic or behavioral, such as interests or affinities, etc.

In addition, the user profile store240may be accessed by other aspects of the social networking system130, e.g., the user interface module225for creating and updating a user profile and its functionality as described herein. The user profile store240may be updated such that the user profile includes experiences added by the user or via being tagged in an experience by another user.

In use, information about new experiences or tags added via a user interface are received at the user profile store240from the user interface module225. When a new experience is created, for example via one user adding a tag indicating association of another user with an experience, the social networking system130initializes a new node corresponding to the experience, assigns a unique object identifier to it, and begins to add data to the experience object as needed. Initially, the experience object includes the experience identifier, an experience type, and the unique identifier associated with the tagged user. As part of the method described herein, when a user is tagged, the social networking system130identifies a match to an existing experience object for the tagged user, or if now, creates the experience object anew. A tag association is created between the tagged user and the experience on the tagging user's user profile, and between the tagging user and the experience on the tagged user's user profile. In addition, an attribution association is added indicating that it was the tagging user who added the experience to the tagged user's user profile, rather than the tagged user himself. The user profile store240stores these objects and associations in the context of the tagging user and tagged user's respective user profiles.

The social networking system130further stores data describing one or more connections between different users in a user connection store245. The connection information may indicate users who have similar or shared affinities such as work experience, group memberships, hobbies, educational history, or are in any way related or share common attributes. Additionally, the social networking system130includes user-defined connections between different users, allowing users to specify their relationships with other users. For example, user-defined connections allow users to generate relationships with other users that parallel the users' real-life relationships, such as friends, co-workers, partners, and so forth. Users may select from predefined types of connections, or define their own connection types as needed. The connection store245includes data structures suitable for describing a user's connections to other users, connections to third-party content object providers120, or connections to other entities. The connection stores245may also associate a connection type with a user's connections, which may be used in conjunction with the user's privacy setting, to regulate access to information about the user. In addition, the connection store245may be accessed by other aspects of the social networking system130, e.g., the user interface module225for providing a list of connections in a drop down for tagging users in an experience as described herein.

The user interface module225is configured to provide a user interface for displaying to a viewer a user profile including various experiences. Data stored in the connection store245, the user profile store240, and the action log230allows the user interface module225access to information for creating the user profiles. The user interface module225may display experiences grouped by various categories, and may show a hierarchy of experiences, with higher level experiences having lower level experiences, or “projects,” nested within them. The user interface module225provides information about newly added experiences and tags to the action logger215and log230and to the user profile store240to include the added items in the user's user profile. The user interface module225provides the functionality described in conjunction with the exemplary user profiles shown inFIGS. 4A-4Caccording to one embodiment.

The action logger215is capable of receiving communications from the web server210about user actions on and/or off the social networking system130. The action logger215populates the action log230with information about user actions, allowing the social networking system130to track various actions taken by its users within the social networking system130and outside of the social networking system130. Any action that a particular user takes with respect to another user is associated with each user's profile, through information maintained in the action log230or in a similar database or other data repository. Examples of actions taken by a user within the social network130that are identified and stored may include, for example, adding a connection to another user, sending a message to another user, reading a message from another user, viewing content associated with another user, attending an event posted by another user, tagging another user in an experience, being tagged by another user in an experience, or other actions interacting with another user. When a user takes an action within the social networking system130, the action is recorded in an action log230.

The action log230may include a history of actions even if the actions are no longer current. For example, if a user is tagged by another user in an experience, and the user removes the tag, the tag is no longer visible to other users, but the action log230still maintains a record of the tag (and tag removal) as actions occurring between the two users. In one embodiment, the social networking system maintains the action log230as a database of entries. When an action is taken within the social networking system130, an entry for the action is added to the action log230.

Actions taken by the user on the user profile provided by the user interface module225may be tracked by the action logger215and action log230. In addition, the action tracker215may transmit communications in addition to receiving them according to one embodiment. When a new tag is received, e.g., via the user profile, the action tracker215performs a verification of whether the experience exists on the tagged user's profile, and if not adds it to the user profile as stored in the user profile store240. In addition, the action tracker215may transmit a notification to the user via various channels according to some embodiments. Notifications may be sent via notification on the social networking system130pages, e-mail notification, or an SMS message on a mobile device, for example. Likewise, when a tag is removed from the experience, the action tracker215tracks it and updates the user profile store240accordingly.

The authorization server235enforces one or more privacy settings of the users of the social networking system130. A privacy setting of a user determines how particular information associated with a user can be shared.

Tagging User in User Profile Experiences

When a second user is tagged in an experience on a first user's user profile, the first user's user profile is updated to show the tagged second user as associated with that experience. In addition, the experience in which the second user was tagged is then added to the tagged second user's user profile. In addition, further detail about the experience can be added via the tag. For example, for the experience travel (which is fairly general), the tag can indicate cities traveled to, who traveled with, dates of travel, etc. The social networking system130stores the information about the experience, experience type, who provided the tag, who was tagged, the further detail, if any, and whether the experience is nested (e.g., a project within an employer).

In this way, embodiments of the invention provide for a way to associate other users with a user's experiences as well as a mechanism for populating users' user profiles with relevant experiences about users as indicated by other users. Specifically, tagging a user in an experience associates the tagged user with a group, and associated node, for the experience. The grouping allows for enhancement of the social graph by providing the social networking system130a greater understanding of the connections between users. In addition, users can search by experience tag, e.g., could search by “eating raw” to find other users who share the eating raw experience.

In some embodiments, experiences can be nested to form an experience hierarchy, for example, projects worked on within a work experience for an employer, clubs, or activities participated in during an educational experience, or particular races participated in within the user profile interest of running, just to name a few examples.

FIG. 3is a flowchart showing one embodiment of a method for tagging users in user profile experiences. Initially, user profiles are maintained310by the social networking system130. The user profile includes various categories of user experiences, including the various types indicated above.

Experiences are nested according to one embodiment. For example, in a work experience, a user may list various jobs that the user has had within a company, e.g., vice president and senior vice president, with each position optionally listing a date range. Similarly, in an educational experience, in addition to listing a name of a high school, the user can add activities such a student counsel and choir. These nested experiences provide richer information about the individual experiences. The social networking system130provides320an interface for the user to add to or edit the various experiences on his user profile.

The social networking system130receives330via the interface tags from the user indicating an association between another user of the social networking system130and the user's experience. For example, the user may add a first tag to someone he went to school with in an educational experience. Tags are received via input by the user into the interface, e.g., via a text field or the like.

In one embodiment, initiating the action of adding a tag to an experience by the user may trigger a look up of the connections of the user for anticipating which connection the user wants to tag. For example, as the user types a drop down list may appear with connections of the user matching the text entered. The user can then continue to type or select the desired connection from the list.

As indicated above, experiences may be hierarchically nested in some examples, e.g., projects worked on while working at a listed employer. The user can select to tag another user at any nested level in the hierarchy. Using the above example, the user could tag another user as working with him at the employer, or as working with him on the project.

Once the first tag is received330from the user, it is included on the user's user profile. In addition, a second tag indicating the user as associated with the experience is added to the other user's user profile. The system may check whether the other user has the experience, or if nested and a lower level experience, whether the other user has the higher level experience. If the other user who was tagged did not have the experience listed on his user profile, the experience also is added340to the other user's profile. If the user added a tag on a nested experience lower in the hierarchy (e.g., on a project within a company), then both the lower and higher level experiences (i.e., both the project and the company) are added to the other user's profile. In one embodiment, An attribution is stored indicating that the user caused the second tag to be added to the other' users user profile (i.e., rather than the other user adding it himself).

The social networking system130also may send a notification to the tagged user that he has been tagged in the experience. The notification may be communicated via a variety of communication channels, including notification on the social networking system130pages, e-mail notification, or an SMS message on a mobile device, for example. Other notification channels also are possible in various embodiments. Newly tagged experiences also may appear in news feeds for connections of the tagged user. Thus, the tagging functionality enhances the interactions between users of the social networking system130, which enhances the social graph and creates stronger affinities between users.

The social networking system130also provides a mechanism for users to remove tags that are incorrect or otherwise undesired. A tagged user may request removal of a tag indicating his association with the experience. In response, the social networking system130removes the tagged user from the experience on the user profile of the user who provided the tag, as well as removes the experience from the tagged user's user profile.

FIG. 4Ais one embodiment of a screenshot of a social networking system user profile400ashowing experiences for user John Doe405. In this example, the experiences include two experience categories410, work experiences (employers)410aand education (grad school)410b. In other examples, a different number and/or types of items may be shown.

In this example two experiences415, Prestigious Employer415aand Ivy League University415bare shown on the user profile400a. Prestigious Employer415ashows two nested experiences420, or “projects”: Project Alpha420aand Project Beta420b. Prestigious Employer415ais considered a higher level experience, and Project Alpha420aand Project Beta420blower level experiences. This nested hierarchy of experiences allows the user to provide more detailed information about the (in this case, work) experience. Various experience information is provided with each experience415,420, such as other users who were associated with the experience (e.g., Mary Smith and 2 others), title (e.g., Project Designer), and duration of experience (e.g., June 2000 to present). In addition, a control may be provided (not shown) to tagged users465that allows the tagged user viewer to remove the tag, e.g., if erroneous or otherwise undesired.

The user profile400aprovides a control for editing430each experience. User selection of the Edit control430activates an edit experience screen400bas described in conjunction withFIG. 4B. The user profile400aalso provides a field for adding a new experience423and a control for adding a project425to an existing experience (e.g.,415a). User selection of the Add a Project control425activates an add project screen400cas described in conjunction withFIG. 4C.

FIG. 4Bis an embodiment of a screenshot of a social networking system user profile showing an edit experience screen400b. The edit experience screen400breplaces a portion of the user profile400ashown inFIG. 4Awith an edit experience control area435. In this example, the experience being edited is Prestigious Employer415, as a result of selection of Edit control430aofFIG. 4A. The edit experience control area435allows the user to edit various functions within the experience, such as editing, removing, or replacing a position via position field440; editing, removing, or replacing a city via a city field445; tagging or removing tags indicating the association of other users via a user tagging field450; editing, removing, or replacing a description of the experience via a description field455; and adjusting a time period worked via time period controls460. Additional controls480allow the profile owner to Save or Cancel any changes made via the edit experience control area435.

In use, the user tagging field450allows the profile owner to tag other users465in the experience. The tagged other users465are displayed with the experience information415a, e.g., as shown inFIG. 4A. In response to typing text into the tagging field450, a drop down470is displayed to the viewer including connections475whose names match the entered text. In the example depicted, the user has typed in “Ja” into the tagging field450. The social networking system130has determined which of the user's connections have text matching Ja, and has included them in the list of connections475:Jane Doe, DerekJasper,Jazzy John. The tagging field450thus presents a type-ahead input field that presents suggestions to the user as to possible matches in the form of a drop down menu470. This functionality can be implemented using various technologies, for example Java Script and AJAX. E.g., as the user enters the text, the browser issues an AJAX request to the server by passing the text as the parameter. The server returns a list of suggestions matching the parameter to the browser for display (e.g., as a drop down menu470).

In one embodiment, one or more search algorithms perform a prefix search in which the search matches objects with name tokens, such as a first or last name associated with a user object, for which the query is a prefix. The prefix search may be performed again for each new character that the user enters into the search interface, such that the combined result set may contain fewer matching objects. For example, when the user types additional characters into the search interface, fewer objects may match the (now longer) typed query, and hence the combined result set would include fewer objects. For additional detail about this typeahead functionality, see U.S. patent application Ser. No. 12/816,377, entitled “Search and Retrieval of Objects in a Social Networking System,” filed Jun. 15, 2010, which is hereby incorporated by reference in its entirety.

The profile owner can select from the connections475a user to be tagged. Once a user is tagged, he is added to the tagged users465, as shown inFIG. 4B(andFIG. 4Aafter saving). As discussed elsewhere herein, tagging a user also may trigger an experience to appear on the tagged user's profile and/or trigger a notification about the tag to the tagged user.

Referring again toFIG. 4A, one or more Add a Project controls425are provided for adding experiences (or projects) within existing projects.FIG. 4Cis an embodiment of a screenshot of a social networking system user profile showing an add project screen400c. The add project screen400cis similar to the user profile400aofFIG. 4A, except that a portion of the profile is replaced with an add project control area485. The add project control area485allows the profile owner to enter a new project, and includes a project field490, a user tagging field450, a description field455, and time period controls460. Additional controls495allow the profile owner to add the project (save it) or cancel the project add. As indicated by the like reference numerals used, the user tagging field450, description field455, and time period controls460function similar to those described in conjunction withFIG. 4Babove. Once added, the new project appears in the appropriate level of experiences on the user profile400a, e.g., as an additional project420inFIG. 4A.

SUMMARY