Varied WI-FI service levels

In one embodiment, a method includes receiving a request from a client computing device of a user to access a communication network; and identifying a particular tier for the client computing device from among a number of tiers of service based at least in part on social-graph information of the user. Each tier of service includes one or more session settings of the communication network. The method also includes configuring a session of the communication network for the client computing device based at least in part on one or more of the session settings of the identified tier of service; and establishing the configured session between the client computing device and the communication network.

TECHNICAL FIELD

This disclosure generally relates to communication networks.

BACKGROUND

A mobile computing device—such as a smartphone, tablet computer, or laptop computer—may include functionality for determining its location, direction, or orientation, such as a GPS receiver, compass, or gyroscope. Such a device may also include functionality for wireless communication, such as BLUETOOTH communication, near-field communication NFC), or infrared (IR) communication or communication with a wireless local area networks (WLANs) or cellular-telephone network. Such a device may also include one or more cameras, scanners, touchscreens, microphones, or speakers. Mobile computing devices may also execute software applications, such as games, web browsers, or social-networking applications. With social-networking applications, users may connect, communicate, and share information with other users in their social networks.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments, a service may include multiple tiers of features or service based on the behavior of the user. The tiers may be applied to any service or resource that requires determination of a user access level. Examples include a communication network (e.g. WI-FI), a shared computing resource (e.g. public computing device at an Internet cafe), or any shared resource with access control (e.g. an automobile, front door of a home, or a gym). In particular embodiments, a WI-FI network may provide different levels of service based on current behavior or social-graph information of the user. As an example, a user connecting to the Internet through a WI-FI network of a particular establishment may receive additional access time for checking-in (e.g. 3 hour), even more time for liking a page associated with the establishment (e.g. 8 hours), or a default time without logging on to the network (e.g. 1 hour). As another example, the bandwidth, quality of service (QoS), or amount of traffic available to user's that log on to the network may be higher than those who don't.

In particular embodiments, a service may include multiple tiers of features or service based on the social graph information of the user. As an example, a WI-FI network may be administered through a social-networking system. Furthermore, if the user obtains access to the WI-FI network by logging on to the social-networking system, the previous behavior of the user on the WI-FI network may be used to determine the level of service to provide the user (e.g. loyalty program). As another example, for a personal WI-FI network, a “friend” of the user owning the network may be provided automatic access to the WI-FI network or a higher level of service than someone not connected to the user. Example signals that may be used to determine the level of service provided to each user are: connection to the user through a social edge, previous check-ins at the geo-location associated with the WI-FI network, or previous behavior of the user. In particular embodiments, the level of service may be determined through calculation of a score that may be a composite of one or more factors such as for example, past behavior of the user with regard to the entity that owns the Wi-Fi network and current behavior such as liking a page associated with the entity.

In particular embodiments, a randomly generated session token that uniquely identifies the user accessing a network to the administrator without providing the specific MAC address of the routers being used for access. As an example, a randomly generated token may identify the user accessing a WI-FI network without providing the MAC or IP address accessing the network to the social-networking system or providing the social-networking system user ID to the owner of the WI-FI network. In particular embodiments, if the user accessing the WI-FI network is logged on to the social-networking system, the social-networking system may map the session token to the user ID of the user. On the other hand, the owner of the WI-FI network can uniquely map the user to a particular session on the WI-FI network through the session token. In particular embodiments, a level of service described above may be determined for the user based on the social-graph information of the user identified through the unique user ID.

DESCRIPTION OF EXAMPLE EMBODIMENTS

FIG. 1illustrates an example network environment100associated with a social-networking system. Network environment100includes a user101, a client system130, a social-networking system160, and a third-party system170connected to each other by a network110. AlthoughFIG. 1illustrates a particular arrangement of user101, client system130, social-networking system160, third-party system170, and network110, this disclosure contemplates any suitable arrangement of user101, client system130, social-networking system160, third-party system170, and network110. As an example and not by way of limitation, two or more of client system130, social-networking system160, and third-party system170may be connected to each other directly, bypassing network110. As another example, two or more of client system130, social-networking system160, and third-party system170may be physically or logically co-located with each other in whole or in part. Moreover, althoughFIG. 1illustrates a particular number of users101, client systems130, social-networking systems160, third-party systems170, and networks110, this disclosure contemplates any suitable number of users101, client systems130, social-networking systems160, third-party systems170, and networks110. As an example and not by way of limitation, network environment100may include multiple users101, client system130, social-networking systems160, third-party systems170, and networks110.

In particular embodiments, user101may be an individual (human user), an entity (e.g., an enterprise, business, or third-party application), or a group (e.g., of individuals or entities) that interacts or communicates with or over social-networking system160. In particular embodiments, social-networking system160may be a network-addressable computing system hosting an online social network. Social-networking system160may generate, store, receive, and send social-networking data, such as, for example, user-profile data, concept-profile data, social-graph information, or other suitable data related to the online social network. Social-networking system160may be accessed by the other components of network environment100either directly or via network110. In particular embodiments, social-networking system160may include an authorization server (or other suitable component(s)) that allows users101to opt in to or opt out of having their actions logged by social-networking system160or shared with other systems (e.g., third-party systems170), for example, by setting appropriate privacy settings. A privacy setting of a user may determine what information associated with the user may be logged, how information associated with the user may be logged, when information associated with the user may be logged, who may log information associated with the user, whom information associated with the user may be shared with, and for what purposes information associated with the user may be logged or shared. Authorization servers may be used to enforce one or more privacy settings of the users of social-networking system30through blocking, data hashing, anonymization, or other suitable techniques as appropriate. In particular embodiments, third-party system170may be a network-addressable computing system. Third-party system170may be accessed by the other components of network environment100either directly or via network110. In particular embodiments, one or more users101may use one or more client systems130to access, send data to, and receive data from social-networking system160or third-party system170. Client system130may access social-networking system160or third-party system170directly, via network110, or via a third-party system. As an example and not by way of limitation, client system130may access third-party system170via social-networking system160. Client system130may be any suitable computing device, such as, for example, a personal computer, a laptop computer, a cellular telephone, a smartphone, or a tablet computer.

In particular embodiments, client system130may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client system130. As an example and not by way of limitation, a client system130may include a computer system such as a desktop computer, notebook or laptop computer, netbook, a tablet computer, e-book reader, global positioning system (GPS) device, camera, personal digital assistant (PDA), handheld electronic device, cellular telephone, smartphone, other suitable electronic device, or any suitable combination thereof. This disclosure contemplates any suitable client systems130. A client system130may enable a network user at client system130to access network110. A client system130may enable user101to communicate with other users at other client systems130.

In particular embodiments, client system130may include a web browser132, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or more add-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client system130may enter a Uniform Resource Locator (URL) or other address directing the web browser132to a particular server (such as a server of social-networking system160or a server associated with a third-party system170), and the web browser132may generate a HTTP request and communicate the HTTP request to server. The server may accept the HTTP request and communicate to client system130one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client system130may render a webpage based on the HTML files from the server for presentation to user101. As described above, the webpage may be a network-access page associated with a captive portal. This disclosure contemplates any suitable webpage files. As an example and not by way of limitation, webpages may render from HTML files, Extensible HTML (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein, reference to a webpage encompasses one or more corresponding webpage files (which a browser may use to render the webpage) and vice versa, where appropriate.

In particular embodiments, social-networking system160may include one or more network resources, such as for example servers. Each server may be a unitary server or a distributed server spanning multiple computers or multiple datacenters. Servers may be of various types, such as, for example and without limitation, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, proxy server, another server suitable for performing functions or processes described herein, or any combination thereof. In particular embodiments, each server may include hardware, software, or embedded logic components or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server.

In particular embodiments, a service administered by social-networking system160, third-party system170, or any combination thereof, may have multiple tiers of features or service, where the tiers for each user101may be determined based at least in part on the current or past behavior of each user101. As an example and not by way of limitation, a service or resource that implements a determination of a user access level (e.g. access to communication network110, a shared client system130, or any suitable shared resource with access control (e.g. a control access door or gym) may be segmented to have different tiers of service. As described below, a WI-FI communication network110may provide different tiers of service based at least in part on current behavior of social-graph information of user101.

FIG. 2illustrates an example portion of an example communication network. In particular embodiments, a communication network110administered by a computer system may include one or more routers50. AlthoughFIG. 2describes and illustrates a particular communication network with a particular arrangement of client systems and routers, this disclosure contemplates any suitable communication network with any suitable arrangement of routers and client systems. As an example and not by way of limitation, the computer system administering communication network110may be a computing infrastructure and platform that may include one or more components for computing, storage, networking, or any combination thereof. In particular embodiments, the computer system administering communication network110may be unaffiliated with the particular entity that owns communication network110. As an example and not by way of limitation, communication network110may be a LAN, such as for example a WI-FI network, and routers50of communication network110may be located at a geolocation associated with the particular entity, such as for example a business.

Access to a WAN, such as for example the Internet, may be provided to one or more client systems130through communication network110through a session established between client systems130and communication network110. As an example and not by way of limitation, one or more client systems130may access the Internet through routers50of communication network110of the particular entity, such as for example an airport authority, that is administered, such as for example by BOINGO. As another example, the particular entity may correspond to a particular domain of the Internet, such as for example a second-level domain (SLED). An example SLED may correspond to a social-networking system (e.g. www.FACEBOOK.com). A session between client device130and communication network110may be established in response to a user performing a login procedure when connecting to communication network110through client system130. As an example and not by way of limitation, the login procedure may include obtaining a login code, providing an e-mail address associated with the user, performing a “check in” at a geolocation associated with the particular entity, or any combination thereof, through a network-access page described above. In particular embodiments, the user agent of client system130may be directed to a network resource (e.g. server) of the computer system, such as for example a social-networking system, in response to connecting to communication network110through client system130. As an example and not by way of limitation, a user agent may be a software client that may operate on behalf of the user, such as for example, a web browser or e-mail client.

As described above, access to communication network110may be segmented into different tiers of service and a particular tier identified for a user based at least in part on the current activity of the user. In particular embodiments, each tier of service may include one or more session settings that may define at least in part one or more characteristics of the session. As an example and not by way of limitation, sessions of communication network110may be configured on the basis of bandwidth, quality of service (QoS), an amount of traffic or data available to the user, or any combination thereof. For example, the user of client system130who is a member of a loyalty program of the entity owning communication network110may be provided a session that is configured in accordance to a particular tier of service that has higher bandwidth than a nominal bandwidth. As another example, a user may be provided a session that is characterized by a nominal amount (e.g. 1 hour) of access time in response to performing the login procedure or a session characterized by an additional amount (e.g. 3 hours) of access time by “checking in” at a geolocation of an entity (e.g. a business). Furthermore, a higher tier of service may provide the user a session on communication network110with a higher amount (e.g. 8 hours) of access time in response to the user “liking” a page associated with the entity owning communication network110. As another example, tiers of service may be partitioned on a content-filtering basis. For example, a default tier of service may provide the user access to a light-weight version of the webpage of a specific domain (e.g. FACEBOOK ZERO), a second tier of service may provide the user access to the webpage of the specific domain (e.g. FACEBOOK), a third tier of service may provide the user limited access to the entire Internet with the capability of viewing low resolution photos and without the capability of streaming video, and highest tier of service that provides unlimited access to the Internet.

In particular embodiments, users accessing communication network110may be assigned a particular tier of service based at least in part on social-graph information of the user. As described above, a user of client system130may be provided a session on communication network110by logging on to the social-networking system. Furthermore, the social-networking system may access a social-graph of the user in response to the user of client system130logging on to the social-networking system and identify a particular tier of service for the user based at least in part on the social-graph information. As an example and not by way of limitation, social-graph information may include one or more connections to a user through at least one social-graph edge, previous “check-ins” at the geolocation associated with communication network110, previously “liking” the webpage of the entity, or any other suitable action corresponding to edges of the social-graph. For example, the social-networking system may determine the user is a member of a loyalty program or has previously “liked” the webpage of the entity that owns the communication network110and assign the user to a higher tier of service. As another example, a user that is a “friend” of the owner of a personal communication (e.g. a personal WI-FI) network110or mobile hotspot may be assigned a tier of service that allows automatic access to communication network110or mobile hotspot, or a higher tier of service than a user that is unconnected to the owner. In particular embodiments, identification of a particular tier appropriate for each user may be based at least in part on calculating a score that may be a composite of one or more signals from the social-graph of the user. As described above, example signals of a composite score may include past behavior of the user with regard to the entity that owns communication network110that may be combined with current behavior of the user, such as for example “liking” the webpage of the entity. As described above, a session may be established between client system130and communication network110that is configured based at least in part on one or more session settings of the identified tier of service.

In particular embodiments, routers50of communication network110may generate a random session token that may uniquely identifies the session of the user on communication network110without providing the media access control (MAC) or internet protocol (IP) address of the particular routers50of communication network110to the administrator system (e.g. social-networking system). Furthermore, the random session token may be used by a social-networking system to associate the session of communication network110to a unique user identification (user ID) of a user account of the social-networking system without identifying the MAC or IP address of the router50of communication network110. In other words, the random session token may shield the userID of the user from the entity that owns communication network110and the geolocation of the user from the administrator of communication network, unless the user specifically performs a “check in” at the geolocation through the social-networking system. In particular embodiments, a particular tier of service may be identified to the user based at least in part on the social-graph information of the user that is identified to the social-networking system through association of the random session token to the userID of the user account on the social-networking system. As described above, the session between client system130and communication network110may be configured based at least in part on the session settings of the tier identified for the user.

FIG. 3illustrates an example mobile computing device. In particular embodiments, a client system, described above, may be a mobile computing device10. This disclosure contemplates mobile computing device10taking any suitable physical form. In particular embodiments, mobile computing device10may be a computing system as described below. As example and not by way of limitation, mobile computing device10may be a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a laptop or notebook computer system, a mobile telephone, a smartphone, a personal digital assistant (PDA), a tablet computer system, or any suitable combination of two or more of these. In particular embodiments, mobile computing device10may have a touch sensor12as an input component. In the example ofFIG. 3, one or more antennae14A-B may be incorporated into one or more sides of mobile computing device10. Antennae14A-B are components that convert electric current into radio waves, and vice versa. During transmission of signals, a transmitter applies an oscillating radio frequency (RF) electric current to terminals of antenna14A-B, and antenna14A-B radiates the energy of the applied the current as electromagnetic (EM) waves. During reception of signals, antennae14A-B convert the power of an incoming EM wave into a voltage at the terminals of antennae14A-B. The voltage may be transmitted to a receiver for amplification.

Mobile computing device10many include a communication component coupled to antennae14A-B for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC), wireless adapter for communicating with a wireless network, such as for example a WI-FI network or modem for communicating with a cellular network, such third generation mobile telecommunications (3G), or Long Term Evolution (LTE) network. This disclosure contemplates any suitable communication network and any suitable communication component for it. As an example and not by way of limitation, mobile computing device10may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As another example, mobile computing device10may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM), 3G, or LTE network), or other suitable wireless network or a combination of two or more of these. Mobile computing device10may include any suitable communication component for any of these networks, where appropriate.

As an example and not by way of limitation, mobile computing device10may connect to a communication network (e.g. WI-FI network) by executing the processes of a configuration pipeline of the operating system (OS) of mobile computing device10. In particular embodiments, the configuration pipeline may support processes for configuring the wireless connection. In particular embodiments, mobile computing device10may utilize a user agent, such as for example a web browser or native application, executed on mobile computing device10to access a communication network, such as for example a WI-FI network. As described above, the user agent of mobile computing device10may be assigned a random session token identifying a particular session of the communication network.

As described above, mobile computing device10may connect to a particular domain, such as for example a SLED (e.g. www.FACEBOOK.com), associated with the communication network through the user agent, such as for example an application, executed on mobile computing device10. As an example and not by way of limitation, the user of mobile computing device10may access the communication network by logging on to the particular domain associated with the communication network. In particular embodiments, an application executed on mobile computing device10may be configured to facilitate interaction between the particular domain of the communication network, such as for example a SLED. As described above, the user of mobile computing device10may be assigned a particular tier of service associated with the communication network based at least in part on the association of the random session token to an account of the user on the particular domain. In particular embodiments, a network resource of the particular domain may determine mobile computing device10is located at a particular geolocation based at least in part on the IP address of the router providing access for mobile computing device10to the communication network. As an example and not by way of limitation, the user may manually “check in” on the social-networking system at a geolocation associated with the communication network through the user agent (e.g. native application).

As described above, a particular tier of service may identified for the user of mobile computing device10based at least in part on the social-graph information or current behavior of the user. In particular embodiments, identification of the particular tier of service may be based on calculating an affinity coefficient, described below, of the user with respect to entity providing the service. Furthermore, the identification of a particular tier of service associated with the communication network may be based at least in part on the user “check-in” at the geolocation of the communication network through mobile computing device10. As described above, any suitable service that uses a determined access level may segmented into multiple tiers. As an example and not by way of limitation, the user may access particular areas of a geolocation that requires verification of an access level, such as for example a hospitality suite or gym of a hotel, based on the user of mobile computing device10“liking” the hotel. As another example, the user may access an automobile or house of another user with access control based at least in part on the information of the user. For example, a distance the user is able to drive an automobile of another user may be based at least in part on calculating the affinity coefficient between the user and the other user. Furthermore, each tier of service may have a respective affinity coefficient threshold value and identification of a particular tier of service may be based at least in part on a comparison of the value of the calculated affinity coefficient of the user. In particular embodiments, a session between mobile computing device10and the communication network may be configured based on the session settings of the identified tier.

FIG. 4illustrates an example method for providing a configured session to a client device. The method may start at step300, where a computing device receives a request from a client computing device of a user to access a communication network. In particular embodiments, the computing device may be a server of a social-networking system. Furthermore, the social-networking system may be the administrator of the communication network. Step302identifies, by the computing device, a particular tier for the client computing device from among a number of tiers of service based at least in part on social-graph information of the user. In particular embodiments, each tier of service may include one or more session settings of the communication network. As an example and not by way of limitation, one or more session settings may be related to an amount of access time or bandwidth for a session. At step304, the computing device configures a session of the communication network for the client computing device based at least in part on one or more of the session settings of the identified tier of service. At step306, the computing device establishes the configured session between the client computing device and the communication network, at which point the method may end. Although this disclosure describes and illustrates particular steps of the method ofFIG. 4as occurring in a particular order, this disclosure contemplates any suitable steps of the method ofFIG. 4occurring in any suitable order. Particular embodiments may repeat one or more steps of the method ofFIG. 4, where appropriate. Moreover, although this disclosure describes and illustrates an example method for providing a configured session to a client device including the particular steps of the method ofFIG. 4, this disclosure contemplates any suitable method for providing a configured session to a client device including any suitable steps, which may include all, some, or none of the steps of the method ofFIG. 4, where appropriate. Furthermore, although this disclosure describes and illustrates particular components carrying out particular steps of the method ofFIG. 4, this disclosure contemplates any suitable combination of any suitable components devices, or systems carrying out any suitable steps of the method ofFIG. 4.

FIG. 5illustrates an example social graph. In particular embodiments, social-networking system160may store one or more social graphs200in one or more data stores. In particular embodiments, social graph200may include multiple nodes—which may include multiple user nodes202or multiple concept nodes204—and multiple edges206connecting the nodes. Example social graph200illustrated inFIG. 5is shown, for didactic purposes, in a two-dimensional visual map representation. In particular embodiments, a social-networking system160, client system130, or third-party system170may access social graph200and related social-graph information for suitable applications. The nodes and edges of social graph200may be stored as data objects, for example, in a data store (such as a social-graph database). Such a data store may include one or more searchable or queryable indexes of nodes or edges of social graph200.

In particular embodiments, a user node202may correspond to a user of social-networking system160. As an example and not by way of limitation, a user may be an individual (human user), an entity (e.g. an enterprise, business, or third-party application), or a group (e.g. of individuals or entities) that interacts or communicates with or over social-networking system160. In particular embodiments, when a user registers for an account with social-networking system160, social-networking system160may create a user node202corresponding to the user, and store the user node202in one or more data stores. Users and user nodes202described herein may, where appropriate, refer to registered users and user nodes202associated with registered users. In addition or as an alternative, users and user nodes202described herein may, where appropriate, refer to users that have not registered with social-networking system160. In particular embodiments, a user node202may be associated with information provided by a user or information gathered by various systems, including social-networking system160. As an example and not by way of limitation, a user may provide his or her name, profile picture, contact information, birth date, sex, marital status, family status, employment, education background, preferences, interests, or other demographic information. In particular embodiments, a user node202may be associated with one or more data objects corresponding to information associated with a user. In particular embodiments, a user node202may correspond to one or more webpages. As described above, users associated with user nodes202may be classified into particular categories based at least in part on information associated with user nodes202. As an example and not by way of limitation, users may be categorized based at least in part on age, location, number of friends, or any combination thereof. Furthermore, the users may be classified based on information associated with user nodes202in conjunction with other information associated with the users stored in an action log, as described above, such as for example recent actions performed by users on social-networking system160.

In particular embodiments, a concept node204may represent a third-party webpage or resource hosted by a third-party system170. The third-party webpage or resource may include, among other elements, content, a selectable or other icon, or other inter-actable object (which may be implemented, for example, in JavaScript, AJAX, or PHP codes) representing an action or activity. As an example and not by way of limitation, a third-party webpage may include a selectable icon such as “like,” “check in,” “eat,” “recommend,” or another suitable action or activity. A user viewing the third-party webpage may perform an action by selecting one of the icons (e.g. “eat”), causing a client system130to transmit to social-networking system160a message indicating the user's action. In response to the message, social-networking system160may create an edge (e.g. an “eat” edge) between a user node202corresponding to the user and a concept node204corresponding to the third-party webpage or resource and store edge206in one or more data stores.

In particular embodiments, a pair of nodes in social graph200may be connected to each other by one or more edges206. An edge206connecting a pair of nodes may represent a relationship between the pair of nodes. In particular embodiments, an edge206may include or represent one or more data objects or attributes corresponding to the relationship between a pair of nodes. As an example and not by way of limitation, a first user may indicate that a second user is a “friend” of the first user. In response to this indication, social-networking system160may transmit a “friend request” to the second user. If the second user confirms the “friend request,” social-networking system160may create an edge206connecting the first user's user node202to the second user's user node202in social graph200and store edge206as social-graph information in one or more of data stores24. In the example ofFIG. 5, social graph200includes an edge206indicating a friend relation between user nodes202of user “A” and user “B” and an edge indicating a friend relation between user nodes202of user “C” and user “B.” Although this disclosure describes or illustrates particular edges206with particular attributes connecting particular user nodes202, this disclosure contemplates any suitable edges206with any suitable attributes connecting user nodes202. As an example and not by way of limitation, an edge206may represent a friendship, family relationship, business or employment relationship, fan relationship, follower relationship, visitor relationship, subscriber relationship, superior/subordinate relationship, reciprocal relationship, non-reciprocal relationship, another suitable type of relationship, or two or more such relationships. Moreover, although this disclosure generally describes nodes as being connected, this disclosure also describes users or concepts as being connected. Herein, references to users or concepts being connected may, where appropriate, refer to the nodes corresponding to those users or concepts being connected in social graph200by one or more edges206.

In particular embodiments, an edge206between a user node202and a concept node204may represent a particular action or activity performed by a user associated with user node202toward a concept associated with a concept node204. As an example and not by way of limitation, as illustrated inFIG. 5, a user may “like,” “attended,” “played,” “listened,” “cooked,” “worked at,” or “watched” a concept, each of which may correspond to an edge type or subtype. A concept-profile page corresponding to a concept node204may include, for example, a selectable “check in” icon (such as, for example, a clickable “check in” icon) or a selectable “like” icon. Similarly, after a user clicks these icons, social-networking system160may create a “like” edge or a “check in” edge in response to a user's action corresponding to a respective action. As described above, a particular tier of service may identified for a user based at least in part on the information of social graph200. In particular embodiments, the service may be a public communication network associated with a particular concept node204that corresponds to a particular business. As an example and not by way of limitation, a particular concept node204of social graph200may correspond to a business that owns the communication network and a particular user node202may correspond to the user. Furthermore, the particular user node202may be connected to at least one of concept nodes204corresponding to the entity by one or more edges206. As an example and not by way of limitation, one or more of the edges connecting the particular user node202corresponding to the user to the particular concept node206of the business may correspond to a “check-in” at a geolocation of the communication network or “liking” a page of an entity associated with the communication network, as described above.

As another example and not by way of limitation, a user (user “C”) may listen to a particular song (“Ramble On”) using a particular application (SPOTIFY, which is an online music application). In this case, social-networking system160may create a “listened” edge206and a “used” edge (as illustrated inFIG. 5) between user nodes202corresponding to the user and concept nodes204corresponding to the song and application to indicate that the user listened to the song and used the application. Moreover, social-networking system160may create a “played” edge206(as illustrated inFIG. 5) between concept nodes204corresponding to the song and the application to indicate that the particular song was played by the particular application. In this case, “played” edge206corresponds to an action performed by an external application (SPOTIFY) on an external audio file (the song “Imagine”). Although this disclosure describes particular edges206with particular attributes connecting user nodes202and concept nodes204, this disclosure contemplates any suitable edges206with any suitable attributes connecting user nodes202and concept nodes204. Moreover, although this disclosure describes edges between a user node202and a concept node204representing a single relationship, this disclosure contemplates edges between a user node202and a concept node204representing one or more relationships. As an example and not by way of limitation, an edge206may represent both that a user likes and has used at a particular concept. Alternatively, another edge206may represent each type of relationship (or multiples of a single relationship) between a user node202and a concept node204(as illustrated inFIG. 5between user node202for user “E” and concept node204for “SPOTIFY”).

In particular embodiments, social-networking system160may create an edge206between a user node202and a concept node204in social graph200. As an example and not by way of limitation, a user viewing a concept-profile page (such as, for example, by using a web browser or a special-purpose application hosted by the user's client system130) may indicate that he or she likes the concept represented by the concept node204by clicking or selecting a “Like” icon, which may cause the user's client system130to transmit to social-networking system160a message indicating the user's liking of the concept associated with the concept-profile page. In response to the message, social-networking system160may create an edge206between user node202associated with the user and concept node204, as illustrated by “like” edge206between the user and concept node204. In particular embodiments, social-networking system160may store an edge206in one or more data stores. In particular embodiments, an edge206may be automatically formed by social-networking system160in response to a particular user action. As an example and not by way of limitation, if a first user uploads a picture, watches a movie, or listens to a song, an edge206may be formed between user node202corresponding to the first user and concept nodes204corresponding to those concepts. Although this disclosure describes forming particular edges206in particular manners, this disclosure contemplates forming any suitable edges206in any suitable manner.

FIG. 6illustrates example computing system. In particular embodiments, one or more computer systems60perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more computer systems60provide functionality described or illustrated herein. In particular embodiments, software running on one or more computer systems60performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems60. Herein, reference to a computer system may encompass a computing device, where appropriate. Moreover, reference to a computer system may encompass one or more computer systems, where appropriate.

In particular embodiments, computer system60includes a processor62, memory64, storage66, an input/output (I/O) interface68, a communication interface70, and a bus72. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor62includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor62may retrieve (or fetch) the instructions from an internal register, an internal cache, memory64, or storage66; decode and execute them; and then write one or more results to an internal register, an internal cache, memory64, or storage66. In particular embodiments, processor62may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor62including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor62may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory64or storage66, and the instruction caches may speed up retrieval of those instructions by processor62. Data in the data caches may be copies of data in memory64or storage66for instructions executing at processor62to operate on; the results of previous instructions executed at processor62for access by subsequent instructions executing at processor62or for writing to memory64or storage66; or other suitable data. The data caches may speed up read or write operations by processor62. The TLBs may speed up virtual-address translation for processor62. In particular embodiments, processor62may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor62including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor62may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors62. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular embodiments, memory64includes main memory for storing instructions for processor62to execute or data for processor62to operate on. As an example and not by way of limitation, computer system60may load instructions from storage66or another source (such as, for example, another computer system60) to memory64. Processor62may then load the instructions from memory64to an internal register or internal cache. To execute the instructions, processor62may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor62may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor62may then write one or more of those results to memory64. In particular embodiments, processor62executes only instructions in one or more internal registers or internal caches or in memory64(as opposed to storage66or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory64(as opposed to storage66or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor62to memory64. Bus72may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor62and memory64and facilitate accesses to memory64requested by processor62. In particular embodiments, memory64includes random access memory (RAM). This RAM may be volatile memory, where appropriate Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory64may include one or more memories64, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

In particular embodiments, storage66includes mass storage for data or instructions. As an example and not by way of limitation, storage66may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage66may include removable or non-removable (or fixed) media, where appropriate. Storage66may be internal or external to computer system60, where appropriate. In particular embodiments, storage66is non-volatile, solid-state memory. In particular embodiments, storage66includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage66taking any suitable physical form. Storage66may include one or more storage control units facilitating communication between processor62and storage66, where appropriate. Where appropriate, storage66may include one or more storages66. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface68includes hardware, software, or both providing one or more interfaces for communication between computer system60and one or more I/O devices. Computer system60may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and computer system60. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces68for them. Where appropriate, I/O interface68may include one or more device or software drivers enabling processor62to drive one or more of these I/O devices. I/O interface68may include one or more I/O interfaces68, where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface70includes hardware, software, or both providing one or more interfaces for communication (such as for example, packet-based communication) between computer system60and one or more other computer systems60or one or more networks. As an example and not by way of limitation, communication interface70may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface70for it. As an example and not by way of limitation, computer system60may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system60may communicate with a wireless PAN (WPAN) (such as for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Computer system60may include any suitable communication interface70for any of these networks, where appropriate. Communication interface70may include one or more communication interfaces70, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.

In particular embodiments, bus72includes hardware, software, or both coupling components of computer system60to each other. As an example and not by way of limitation, bus72may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus72may include one or more buses72, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.