Patent Abstract:
A system and method for maintaining associations within a social network for a user are provided. A device proximate a user device is identified. It is determined whether the identified device is associated with an entity having a pre-established association with a user of the user device within the social network. The user is associated with the entity within the social network if the identified device is not associated with an entity having a pre-established association with the user if a determination is made that the user is to be associated with the entity. The user-entity association is maintained within the social network based upon whether the entity and the user device remain proximate.

Full Description:
RELATED APPLICATIONS 
       [0001]    This patent application is a continuation of U.S. patent application Ser. No. 15/186,676 filed Jun. 20, 2016, entitled, “SYSTEM AND METHOD FOR MAINTAINING ASSOCIATIONS WITHIN A SOCIAL NETWORK FOR A USER,” now U.S. Pat. No. 9,674,241, which is a continuation of U.S. patent application Ser. No. 13/887,456 filed May 3, 2013, entitled “SYSTEM AND METHOD FOR MAINTAINING ASSOCIATIONS WITHIN A SOCIAL NETWORK FOR A USER,” now U.S. Pat. No. 9,374,398, which is a continuation of U.S. application Ser. No. 13/533,056 filed Jun. 26, 2012, entitled “SYSTEM AND METHOD FOR IDENTIFYING TRANSIENT FRIENDS,” now U.S. Pat. No. 8,458,257, which is a continuation of U.S. patent application Ser. No. 13/036,370 filed Feb. 28, 2011, entitled “SYSTEM AND METHOD FOR IDENTIFYING TRANSIENT FRIENDS,” now U.S. Pat. No. 8,209,416, which is a continuation of U.S. patent application Ser. No. 12/013,147, filed Jan. 11,2008, entitled “SYSTEM AND METHOD FOR IDENTIFYING TRANSIENT FRIENDS,” now U.S. Pat. No. 8,024,431, which claims the benefit of provisional patent application serial number 61/016,074, filed Dec. 21,2007, the disclosures of which are hereby incorporated herein by reference in their entireties. 
     
    
     FIELD 
       [0002]    The present invention relates to social networking and more specifically relates to identifying transient friends for a social network. 
       BACKGROUND 
       [0003]    Today&#39;s digital world includes numerous examples of social networks. For example, chat applications, instant messaging applications, social networking websites, and the like enable a user to create a social network of friends with which the user interacts. With the proliferation of mobile devices such as mobile smart phones, an opportunity exists to extend traditional concepts of social networking among users of stationary devices to social networking among users of mobile devices. However, whether implemented among users of stationary devices or users of mobile devices, one issue with traditional social networks is the discovery of new friends. A user must typically have prior knowledge of users that he or she wishes to add as friends or manually select users to add as friends from a global list of users. Thus, there is a need for a system and method of identifying friends for social networks in a mobile environment. 
       SUMMARY 
       [0004]    The present invention relates to identifying transient friends for a social network. In general, a transient friend processing function obtains locations of a number of users or locations otherwise associated with the number of users. In order to identify transient friends for a first user, the transient friend processing function identifies other users associated with locations within a proximate area of the first user. For each of the identified users, the transient friend processing function compares a user profile of the first user to a user profile of the identified user to determine whether to add the identified user as a transient friend of the first user. If the transient friend processing function determines that the identified friend is to be added as a transient friend of the first user, the identified friend is then added as a transient friend of the first user. 
         [0005]    More specifically, in one embodiment, in order to determine whether to add an identified user associated with a location within the proximate area of the first user as a transient friend of the first user, the transient friend processing function compares a user profile of the first user to a user profile of the identified user to provide a correlation score. If the correlation score is greater than an auto-add threshold, the identified user is added as a transient friend of the first user. If the correlation score is less than the auto-add threshold but greater than a manual-add threshold, the first user is notified of the identified user and enabled to choose whether to accept the identified user as a transient friend. If the first user accepts the identified user as a transient friend, the identified user is added as a transient friend of the first user. 
         [0006]    The transient friend processing function also operates to monitor the transient friends of the first user. If a transient friend is no longer within the proximate area of the first user, the transient friend is removed as a transient friend of the first user. In one embodiment, a proximity exit delay is used such that the transient friend must remain outside of the proximate area of the first user for an amount of time defined by the proximity exit delay before being removed as a transient friend of the first user. Before removing the transient friend, the transient friend processing function may notify the first user and enable the first user to choose whether to promote the transient friend to a persistent friend or to allow the transient friend to be removed. 
         [0007]    In one embodiment, a user recently removed as a transient friend of the first user is prevented from being added as a transient friend of the first user. More specifically, once a user is removed as a transient friend, a re-establish wait period is established such that the user cannot be added as a transient friend of the first user until the re-establish wait period has expired. This may be desirable to ensure that users near a boundary of the proximate area of the first user are not repeatedly added and removed as transient friends of the first user. 
         [0008]    The first user may also choose to block a user from being added as a transient friend. More specifically, in one embodiment, the first user may select a user such as a user listed as a transient friend of the first user and choose to block that user. As a result, if the blocked user is a transient friend, the blocked user is removed as a transient friend. In addition, the blocked user is prevented from being added as a transient friend of the first user in the future. The first user may thereafter unblock the blocked user if desired. 
         [0009]    Those skilled in the art will appreciate the scope of the present invention and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING FIGURES 
         [0010]    The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the invention, and together with the description serve to explain the principles of the invention. 
           [0011]      FIG. 1  illustrates a system incorporating a transient friend processing function according to one embodiment of the present invention; 
           [0012]      FIGS. 2A through 2C  graphically illustrate the operation of the transient friend processing function of  FIG. 1  according to one embodiment of the present invention; 
           [0013]      FIGS. 3A and 3B  are flow charts illustrating the operation of the transient friend processing function to identify transient friends according to one embodiment of the present invention; 
           [0014]      FIG. 4  is a flow chart illustrating the operation of the transient friend processing function to monitor transient friends according to one embodiment of the present invention; 
           [0015]      FIG. 5  graphically illustrates the concept of a proximity exit delay and a re-establish wait period according to one embodiment of the present invention; 
           [0016]      FIG. 6  is a block diagram of the central server of  FIG. 1  according to one embodiment of the present invention; and 
           [0017]      FIG. 7  is a block diagram of one of the user devices of  FIG. 1  according to one embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]    The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the invention and illustrate the best mode of practicing the invention. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the invention and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims. 
         [0019]      FIG. 1  illustrates a system  10  for identifying and monitoring transient friends according to one embodiment of the present invention. In general, the system  10  includes a central server  12 , a number of mobile user devices  14 - 1  through  14 -N, and optionally one or more stationary user device  16  connected via a network  18 . The network  18  is also referred to herein as a communication network. The network  18  may be any type Wide Area Network (WAN) or Local Area Network (LAN), or any combination thereof. In addition, the network  18  may include wired components, wireless components, or both wired and wireless components. Users  20 - 1  through  20 -N are associated with the mobile user devices  14 - 1  through  14 -N. A user  22  is associated with the stationary user device  16 . Note that while a single central server  12  is illustrated in  FIG. 1 , the present invention is not limited thereto. The functionality of the central server  12  may alternatively be distributed among multiple servers. 
         [0020]    The central server  12  includes a transient friend processing function  24  and user records  26 . The transient friend processing function  24  is preferably implemented in software. However, the present invention is not limited thereto. The transient friend processing function  24  may be implemented in software, hardware, or a combination thereof. The transient friend processing function  24  includes a transient friend identification function  28  and a transient friend monitoring function  30 . The transient friend identification function  28  generally operates to identify transient friends for each of the users  20 - 1  through  20 -N and  22 . As used herein, for a first user, a transient friend of the first user is a second user located within a proximate area of the first user, or otherwise associated with a location within the proximate area of the first user, and, optionally, having one or more attributes that are substantially similar to one or more attributes of the first user. Once identified as a transient friend, the second user&#39;s continued status as a transient friend of the first user is dependant upon the location of, or location associated with, the second user being within the proximate area of the first user and, optionally, substantial similarity between the one or more attributes of the second user and the one or more attributes of the first user. 
         [0021]    The transient friend monitoring function  30  operates to monitor the transient friends of the users  20 - 1  through  20 -N and  22 . More specifically, using the user  20 - 1  as an example, the transient friend monitoring function  30  generally operates to monitor the transient friends of the user  20 - 1  such that other users from the users  20 - 2  through  20 -N and  22  that are identified as the transient friends of the user  20 - 1  are removed as transient friends when they are no longer within the proximate area of the user  20 - 1 . In one embodiment, a proximity exit delay is implemented such that a user is not removed as a transient friend until the user is outside of the proximate area of the user  20 - 1  for an amount of time defined by the proximity exit delay. This may be beneficial where a user is near a boundary of the proximate area of the user  20 - 1  and, as such, may enter and leave the proximate area of the user  20 - 1  frequently. The proximity exit delay, as well as a re-establish wait period discussed below, provides stability in such a scenario. 
         [0022]    The user records  26  include a user record for each of the users  20 - 1  through  20 -N and  22 . Again using the user  20 - 1  as an example, the user record for the user  20 - 1  includes information identifying the user  20 - 1  such as, for example, a user identifier (ID), a user profile of the user  20 - 1  which includes a number of attributes of the user  20 - 1 , one or more locations associated with the user  20 - 1  which are also referred to herein as physical locations, a list of persisted or permanent friends of the user  20 - 1 , a list of transient friends of the user  20 - 1 , a list of recently removed friends of the user  20 - 1 , and a list of blocked users that are to be prevented from being added as transient friends of the user  20 - 1 . The user profile of the user  20 - 1  includes one or more attributes of the user  20 - 1  such as, for example, biographical information; demographic information; music preferences such as one or more favorite music genres, one or more favorite music artists, one or more favorite songs, or one or more favorite time periods; video preferences such as one or more favorite movie genres, one or more favorite television show genres, one or more favorite actors or actresses, one or more favorite time periods; hobbies; or the like. The attributes of the user  20 - 1  may also include one or more criteria defined by the user  20 - 1  for identifying transient friends such as, for example, biographical information describing a desired transient friend, demographic information describing a desired transient friend, music preferences of a desired transient friend, video preferences of a desired transient friend, one or more hobbies of a desired transient friend, or the like. As discussed below, in one embodiment, the list of recently removed friends also includes a time of removal for each of the recently removed friends. The time of removal is a time at which the corresponding recently removed friend was removed as a transient friend of the user  20 - 1 . 
         [0023]    The one or more locations associated with the user  20 - 1  may include a current location of the user  20 - 1  and, optionally, one or more previous locations of the user  20 - 1 . In addition or alternatively, the locations associated with the user  20 - 1  may include, for example, a home address of the user  20 - 1 , a work address of the user  20 - 1 , or the like. Note that while the discussion below focuses on identifying transient friends for the user  20 - 1  based on a single location associated with the user  20 - 1  for ease of discussion, transient friends may be identified for the user  20 - 1  using each of any number of locations associated with the user  20 - 1 . Alternatively, the current location of the user  20 - 1  may be used to identify other users within the proximate area of the user  20 - 1 , whereas any additional locations of the user  20 - 1  may be considered attributes and used to identify transient friends in a manner similar to the attributes in the user profile of the user  20 - 1 . 
         [0024]    The user record of the user  20 - 1  may also include information defining or otherwise identifying a proximate area of the user  20 - 1 . In general, the proximate area of the user  20 - 1  is a geographic area surrounding the user  20 - 1 . In one embodiment, the proximate area of the user  20 - 1  is a circular area where the information defining the proximate area of the user  20 - 1  is a maximum distance or radius from the user  20 - 1 . However, the present invention is not limited thereto. The proximate area of the user  20 - 1  may be defined by the user  20 - 1  or may be system-defined. In an alternative embodiment, rather than storing information defining the proximate area of the user  20 - 1  in the user profile of the user  20 - 1 , the proximate area of the user  20 - 1  as well as all of the other users  20 - 2  through  20 -N and  22  may be hard-coded into the transient friend processing function  24 . 
         [0025]    The mobile user devices  14 - 1  through  14 -N are mobile devices. For example, each of the mobile user devices  14 - 1  through  14 -N may be a mobile phone such as or similar to an Apple iPhone, a portable media player such as or similar to an Apple iPod® or Microsoft Zune® media player having network capabilities, a notebook computer, or the like. The mobile user devices  14 - 1  through  14 -N generally include social networking applications  32 - 1  through  32 -N and location determination functions  34 - 1  through  34 -N, respectively. Using the mobile user device  14 - 1  as an example, the social networking application  32 - 1  may be implemented in software, hardware, or a combination of software and hardware. The social networking application  32 - 1  is generally any type of application that utilizes a social network. For example, the social networking application  32 - 1  may be a text-based or voice-based chat or instant messaging application, a media recommendation application, or the like. In one embodiment, the social networking application  32 - 1  is a social network based media recommendation application such as or similar to the one described in commonly owned and assigned U.S. patent application Ser. No. 11/484,130, entitled P2P NETWORK FOR PROVIDING REAL TIME MEDIA RECOMMENDATIONS, which was filed on Jul. 11, 2006 and is hereby incorporated herein by reference in its entirety. 
         [0026]    The location determination function  34 - 1  may be implemented in software, hardware, or a combination thereof. In general, the location determination function  34 - 1  determines or otherwise obtains a location of the mobile user device  14 - 1  and provides the location to the central server  12  automatically or upon request. For example, the location determination function  34 - 1  may be a Global Positioning System (GPS) receiver or the like. As another example, the location determination function  34 - 1  may obtain the location of the mobile user device  14 - 1  from an external source. More specifically, if the mobile user device  14 - 1  has access to a wireless telecommunications network, the location of the mobile user device  14 - 1  may be determined by a server or some other component of the wireless telecommunications network using a technique such as, but not limited to, triangulation. If the mobile user device  14 - 1  has a local wireless interface such as a Bluetooth interface or one of the suite of IEEE  802 . 11  wireless interfaces, the mobile user device  14 - 1  may obtain its location from a source within its local wireless communication area. As another example, the location determination function  34 - 1  may obtain the location of the mobile user device  14 - 1  from the user  20 - 1 . More specifically, the location determination function  34 - 1  may query the user  20 - 1  for the location of the mobile user device  14 - 1  or otherwise enable the user  20 - 1  enter the location of the mobile user device  14 - 1 . The user  20 - 1  may provide the location of the mobile user device  14 - 1  in the form of a physical address or the like. 
         [0027]    In an alternative embodiment, the mobile user device  14 - 1  does not include the location determination function  34 - 1 , and the location of the mobile user device  14 - 1  is otherwise provided to or obtained by the central server  12 . For example, as discussed above, the mobile user device  14 - 1  may be associated with a wireless telecommunications network in one embodiment. As such, a server or other component of the wireless telecommunications network may obtain the location of the mobile user device  14 - 1  using a technique such as, but not limited to, triangulation. The location of the mobile user device  14 - 1  may then be provided to the central server  12  automatically or upon request. As another alternative, the central server  12  may be a component of the wireless telecommunications network and be responsible for determining the location of the mobile user device  14 - 1  using a technique such as, but not limited to, triangulation. 
         [0028]    In another alternative embodiment, the mobile user device  14 - 1  may transiently connect to the network  18  via a local wireless interface such as a Bluetooth wireless interface or one of the suite of IEEE 802.11 wireless interfaces. In this case, the mobile user device  14 - 1  may use the local wireless interface to connect to the central server  12  through distributed access points. The central server  12  may then determine the location of the mobile user device  14 - 1  using an Internet Protocol (IP) address of the mobile user device  14 - 1  or the like. Note that techniques for determining location based on an IP address are known in the art. 
         [0029]    The stationary user device  16  may be, for example, a desktop computer or similar consumer device having network capabilities. Like the mobile user devices  14 - 1  through  14 -N, the stationary user device  16  includes a social networking application  36 , which may be implemented in software, hardware, or a combination thereof. The stationary user device  16  may include a location determination function  38 . Alternatively, the location of the stationary user device  16  may be provided by the user  22 , determined by the central server  12  based on an IP address of the stationary user device  16 , or the like. 
         [0030]    Note that in another embodiment, the stationary user device  16  may be a device such as a server, personal computer, or the like associated with a business or other public facility, and the user  22  may be an automated user and therefore referred to as automated user  22 . As such, when the business or other public facility is within the proximate area of, for example, the user  20 - 1 , the automated user  22  may be identified as a transient friend of the user  20 - 1 . As a result, the automated user  22  may, for example, send information regarding the business or other public facility to the user  20 - 1 . For example, the automated user  22  may send advertisements, media recommendations, or the like to the user  20 - 1 . 
         [0031]      FIGS. 2A through 2C  illustrate the general operation of the transient friend processing function  24  of  FIG. 1  according to one embodiment of the present invention.  FIG. 2A  illustrates a proximate area  40  of user A. In this example, the proximate area  40  is a circular area defined by a radial distance R. However, the present invention is not limited thereto.  FIG. 2B  illustrates a scenario where user B has entered the proximate area  40  of user A. As discussed below, the transient friend identification function  28  first detects that user B is within the proximate area  40  of user A and then compares a user profile of user A to a user profile of user B to determine a correlation score. If the correlation score is greater than an auto-add threshold, user B is automatically added as a transient friend of user A. If the correlation score is less than the auto-add threshold but greater than a manual-add threshold, user A is notified of user B and enabled to choose whether to add user B as a transient friend. In this example, assume that user B has been added as a transient friend of user A. 
         [0032]      FIG. 2C  illustrates a scenario where user B, after being added as a transient friend of user A, is no longer within the proximate area  40  of user A. As discussed below, the transient friend monitoring function  30  first detects that user B is outside the proximate area  40  of user A and then determines whether to remove user B as a transient friend of user A. In one embodiment, after user B has been outside the proximate area  40  for an amount of time equal to or greater than a proximity exit delay, the transient friend monitoring function  30  notifies user A and enables user A to choose whether to promote user B from a transient friend to a persisted friend or to remove user B as a transient friend. Alternatively, the transient friend monitoring function  30  may automatically remove user B as a transient friend of user A. 
         [0033]      FIGS. 3A and 3B  are flow charts illustrating the operation of the transient friend identification function  28  according to one embodiment of the present invention. Note that although the following process is discussed as being performed to identify transient friends of the user  20 - 1 , the process is also performed to identify transient friends of each of the other users  20 - 2  through  20 -N and  22 . First, the transient friend identification function  28  identifies one or more users from the other users  20 - 2  through  20 -N and  22  within the proximate area of the user  20 - 1  to create a list of proximate users (step  100 ). A first proximate user from the list of proximate users is identified (step  102 ). The transient friend identification function  28  then determines whether the proximate user is a persisted friend (step  104 ). More specifically, in order to determine whether the proximate user is a persisted friend of the user  20 - 1 , the transient friend identification function  28  may compare a user ID of the proximate user to the list of persisted friends for the user  20 - 1 . If the proximate user is in the list of persisted friends for the user  20 - 1 , then the proximate user is already a persisted friend of the user  20 - 1 . If the proximate user is a persisted friend of the user  20 - 1 , the process proceeds to step  128  ( FIG. 3B ). 
         [0034]    If the proximate user is not a persisted friend of the user  20 - 1 , the transient friend identification function  28  then determines whether the proximate user is a user blocked by the user  20 - 1  (step  106 ). More specifically, in order to determine whether the proximate user is a user blocked by the user  20 - 1 , the transient friend identification function  28  may compare a user ID of the proximate user to the list of blocked users for the user  20 - 1 . If the proximate user is in the list of blocked users for the user  20 - 1 , then the proximate user is a user blocked by the user  20 - 1 . If the proximate user is a blocked user, the process proceeds to step  128  ( FIG. 3B ). 
         [0035]    If the proximate user is not a blocked user, the transient friend identification function  28  then determines whether the proximate user is a user recently removed as a transient friend of the user  20 - 1  (step  108 ). More specifically, in order to determine whether the proximate user is a user recently removed as a transient friend of the user  20 - 1 , the transient friend identification function  28  may compare a user ID of the proximate user to a list of recently removed users for the user  20 - 1 . If the proximate user is in the list of recently removed users for the user  20 - 1 , then the proximate user is a user recently removed by the user  20 - 1 . If the proximate user is not a recently removed user, the process proceeds to step  114 . 
         [0036]    In this embodiment, if the proximate user is a recently removed user, the transient friend identification function  28  then determines whether a re-establish wait period for the proximate user has expired (step  110 ). The re-establish wait period is a user-defined or system-defined amount of time that must expire before a user removed as a transient friend can be re-established as a transient friend. In order to determine whether the re-establish wait period has expired, the transient friend identification function  28  may first determine an expiration time corresponding to a removal time identifying a time at which the proximate user was removed as a transient friend of the user  20 - 1  plus the amount of time defined by the re-establish wait period. If the current time is after the expiration time, then the re-establish wait period has expired. Otherwise, the re-establish wait period has not expired. If the re-establish wait period has not expired, the process proceeds to step  128  ( FIG. 3B ). If the re-establish wait period has expired, the transient friend identification function  28  removes the proximate user from the recently removed friends list for the user  20 - 1  (step  112 ). 
         [0037]    At this point, the transient friend identification function  28  compares the user profile of the proximate user to the user profile of the user  20 - 1  to provide a correlation score (step  114 ). The correlation score may be provided using any desired comparison technique. For example, the correlation score may be a number of attributes from the user profile of the proximate user that match or are within some defined range of corresponding attributes from the user profile of the user  20 - 1 , or vice versa. As another example, the correlation score may be provided as a percentage of attributes in the user profile of the proximate user that match or are within a defined range of corresponding attributes in the user profile of the user  20 - 1 , or vice versa. Note that weights may be assigned to user attributes such that some user attributes affect the correlation score more than others. 
         [0038]    Note that comparing the user profile of the proximate user to the user profile of the user  20 - 1  to provide a correlation score is optional. Alternatively, all other users within the proximate area of the user  20 - 1  may be added as transient friends of the user  20 - 1 . In another alternative embodiment, up to some defined maximum number of the other users within the proximate area of the user  20 - 1  may be added as transient friends of the user  20 - 1 . As another alternative embodiment, up to a defined maximum number of other users that are closest to the location of the user  20 - 1  may be added as transient friends of the user  20 - 1 . Note that these alternative embodiments are exemplary. Other types of criteria may be used in order to select transient friends from other users within the proximate area of the user  20 - 1 . 
         [0039]    Once the correlation score is determined, the transient friend identification function  28  determines whether the correlation score is greater than an auto-add threshold (step  116 ). The auto-add threshold may be a user-defined threshold or a system-defined threshold. Further, the auto-add threshold may be static or dynamic. For example, the user  20 - 1  may adjust the auto-add threshold when desired. As another example, the transient friend identification function  28  may dynamically change the auto-add threshold as a function of factors such as, for example, a number of transient friends in the transient friends list of the user  20 - 1 , a number of transient friends in the transient friends list of the user  20 - 1  as compared to a desired number of transient friends, a total number of persisted friends and transient friends of the user  20 - 1 , a total number of persisted friends and transient friends of the user  20 - 1  as compared to a desired number of persisted and transient friends, or the like. 
         [0040]    If the correlation score is greater than the auto-add threshold, the transient friend identification function  28  adds the proximate user to the list of transient friends for the user  20 - 1  (step  118 ). The process then proceeds to step  128 . If the correlation score is less than the auto-add threshold, the transient friend identification function  28  determines whether the correlation score is greater than a manual-add threshold (step  120 ). The manual-add threshold may be a user-defined threshold defined by the user  20 - 1  or a system-defined threshold. Further, the manual-add threshold may be static or dynamic. For example, the user  20 - 1  may adjust the manual-add threshold when desired. As another example, the transient friend identification function  28  may dynamically change the manual-add threshold as a function of factors such as, for example, a number of transient friends in the transient friends list of the user  20 - 1 , a number of transient friends in the transient friends list of the user  20 - 1  as compared to a desired number of transient friends, a total number of persisted friends and transient friends of the user  20 - 1 , a total number of persisted friends and transient friends of the user  20 - 1  as compared to a desired number of persisted and transient friends, or the like. Note that the manual-add threshold may be any desired value less than or equal to the auto-add threshold. Further, if desired, the manual-add threshold may be zero such that the user  20 - 1  is given the option to choose whether to add proximate users as transient friends for all proximate users having correlation scores less than the auto-add threshold. In contrast, the manual-add score may be set equal to the auto-add threshold such that all proximate users having correlation scores less than the auto-add threshold are not added as transient friends of the user  20 - 1 . 
         [0041]    If the correlation score is not greater than the manual-add threshold, the process proceeds to step  128 . If the correlation score is greater than the manual-add threshold, the transient friend identification function  28  notifies the user  20 - 1  and enables the user  20 - 1  to choose whether to add the proximate user as a transient friend (step  122 ). The notification may include information identifying the proximate user, the correlation score, one or more of the attributes of the proximate user from the user profile of the proximate user, or the like. Based on a response from the user  20 - 1 , the transient friend identification function  28  determines whether to add the proximate user as a transient friend for the user  20 - 1  (step  124 ). If the user  20 - 1  has chosen not to add the proximate user as a transient friend, the process proceeds to step  128 . Otherwise, the transient friend identification function  28  adds the proximate user to the list of transient friends for the user  20 - 1  (step  126 ). 
         [0042]    At this point, the transient friend identification function  28  determines whether the proximate user is the last proximate user in the list of proximate users provided in step  102  (step  128 ). If not, a next proximate user in the list of proximate users is identified (step  130 ), and then the process returns to step  104  ( FIG. 3A ). Once the last proximate user in the list of proximate users is processed, the process ends. Note that transient friend identification function  28  may then perform the process of  FIGS. 3A and 3B  for each of the other users  20 - 2  through  20 -N and  22 . Alternatively, the transient friend identification function  28  may include a separate thread or process for each of the users  20 - 1  through  20 -N and  22 . 
         [0043]    Note that, in the embodiment described above, the correlation score is implemented such that the proximate user is automatically added as a transient friend if the correlation score is greater than the auto-add threshold. If not, the proximate user may be manually added as a transient friend if the correlation score is greater than the manual-add threshold. However, the correlation score may alternatively be implemented such that the proximate user is automatically added as a transient friend if the correlation score is less than an auto-add threshold and may be manually added as a transient friend if the correlation score is greater than the auto-add threshold but less than a manual-add threshold. 
         [0044]      FIG. 4  is a flow chart illustrating the operation of the transient friend monitoring function  30  of  FIG. 1  according to one embodiment of the present invention. Note that while the following process is discussed as being performed to monitor the transient friends of the user  20 - 1 , the process is also performed to monitor the transient friends of each of the other users  20 - 2  through  20 -N and  22 . First, the transient friend monitoring function  30  identifies a first transient friend in the list of transient friends of the user  20 - 1  (step  200 ). Next, the transient friend monitoring function  30  determines whether the user  20 - 1  has issued a block request for the transient friend (step  202 ). More specifically, in one embodiment, the user  20 - 1  may select one or more users identified as transient friends and choose to block the selected users from being transient friends. If the user  20 - 1  has issued a block request for the transient friend, the transient friend monitoring function  30  adds the corresponding user to the list of blocked users for the user  20 - 1 , removes the corresponding user as a transient friend of the user  20 - 1 , and proceeds to step  220  (step  204 ). 
         [0045]    If the user  20 - 1  has not issued a block request for the transient friend, the transient friend monitoring function  30  determines whether the transient friend is still in the proximate area of the user  20 - 1  (step  206 ). If so, the process proceeds to step  220 . In an alternative embodiment, before proceeding to step  220 , the transient friend monitoring function  30  may determine whether the user profile of the transient friend or the user profile of the user  20 - 1  has changed. If so, the correlation score is updated. If the updated correlation score is below an auto-removal threshold, the transient friend may be automatically removed. If the updated correlation score is greater than the auto-removal threshold but less than a manual-remove threshold, the user  20 - 1  may be notified and enabled to choose whether to remove the transient friend. 
         [0046]    Returning to step  206 , if the transient friend is not in the proximate area of the user  20 - 1 , the transient friend monitoring function  30  determines whether a proximity exit delay for the transient friend has expired (step  208 ). More specifically, in one embodiment, a time is recorded upon first detecting that the transient friend is no longer within the proximate area of the user  20 - 1 . The proximity exit delay defines an amount of time that the transient friend must remain outside of the proximate area of the user  20 - 1  before being removed as a transient friend of the user  20 - 1 . Thus, in order for the proximity exit delay to expire, more than one iteration of the process of  FIG. 4  may be required between the time at which the transient friend is first detected as being outside the proximate area of the user  20 - 1  and the time at which the proximity exit delay has expired. If the proximity exit delay has not expired, the process proceeds to step  220 . 
         [0047]    In this embodiment, if the proximity exit delay has expired, the transient friend monitoring function  30  notifies the user  20 - 1  and enables the user  20 - 1  to choose whether to add the transient friend as a persisted friend or to allow the transient friend to be removed (step  210 ). Alternatively, the transient friend may automatically be removed. Based on a response from the user  20 - 1 , the transient friend monitoring function  30  determines whether to remove the transient friend (step  212 ). If the transient friend is not to be removed, the transient friend monitoring function  30  promotes the transient friend to a persisted friend (step  214 ). More specifically, the corresponding user is removed from the transient friends list of the user  20 - 1  and added to the persisted friends list of the user  20 - 1 . 
         [0048]    If the user  20 - 1  chooses to remove the transient friend, the transient friend monitoring function  30  removes the corresponding user from the transient friends list of the user  20 - 1  (step  216 ). The transient friend monitoring function  30  also adds the corresponding user as a recently removed friend (step  218 ). More specifically, the corresponding user is added to the list of recently removed friends for the user  20 - 1 . In addition, if the use of a re-establish wait period is desired, the current time is recorded as a time of removal for the corresponding user. 
         [0049]    At this point, the transient friend monitoring function  30  determines whether there are more transient friends in the transient friends list of the user  20 - 1  (step  220 ). If so, a next transient friend is identified (step  222 ), and the process returns to step  202  and is repeated. Once the last transient friend is processed, the process ends. Note that transient friend monitoring function  30  may then perform the process of  FIG. 4  for each of the other users  20 - 2  through  20 -N and  22 . Alternatively, the transient friend monitoring function  30  may include a separate thread or process for each of the users  20 - 1  through  20 -N and  22 . 
         [0050]      FIG. 5  is a graphical illustration of the operation of the transient friend processing function  24  of  FIG. 1  including the use of a re-establish wait period and a proximity exit delay according to one embodiment of the present invention. More specifically, four scenarios, scenarios A through D, are illustrated. In each scenario, a relationship of users A and B are graphically depicted as user B comes inside a proximate area of user A, goes outside of the proximate area of user A, and then comes back inside the proximate area of user A. 
         [0051]    In scenario A, at an initial time, Time  0 , user B is initially not within the proximate area of user A. As such, there is no relationship between users A and B. At Time  1 , user B comes within the proximate area of user A. Assuming that the conditions for adding user B as a transient friend of user A are satisfied, user B is then added as a transient friend of user A. Thereafter, at Time  2 , user B goes outside of the proximate area of user A. In this scenario, user B does not re-enter the proximate area of user A before the proximity exit delay has expired. As a result, user B is removed as a transient friend of user A. When user B is removed as a transient friend of user A, a time of removal is recorded. User B is prevented from being re-established as a transient friend of user A until a re-establish wait period starting from the time of removal has expired. In this example, user B re-enters the proximate area of user A at Time  3 . However, the re-establish wait period has not expired. As such, user B is prevented from being added as a transient friend of user A. When the re-establish wait period expires, user B is still in the proximate area of user A. As such, user B is then re-established as a transient friend of user A. 
         [0052]    In scenario B, at the initial time, Time  0 , user B is initially not within the proximate area of user A. As such, there is no relationship between users A and B. At Time  1 , user B comes within the proximate area of user A. Assuming that the conditions for adding user B as a transient friend of user A are satisfied, user B is then added as a transient friend of user A. Thereafter, at Time  2 , user B goes outside of the proximate area of user A. However, in this scenario, user B re-enters the proximate area of user A before the proximity exit delay has expired. As a result, user B is not removed as a transient friend of user A. 
         [0053]    In scenario C, at the initial time, Time  0 , user B is initially not within the proximate area of user A. As such, there is no relationship between users A and B. At Time  1 , user B comes within the proximate area of user A. Assuming that the conditions for adding user B as a transient friend of user A are satisfied, user B is then added as a transient friend of user A. Thereafter, at some time while user B is in the proximate area of user A, user A requests that user B be promoted from a transient friend to a persisted friend. As such, user B is added to the list of persisted friends of user A and, therefore, remains a friend of user A regardless of location and similarity of user attributes. Note, however, that user A may thereafter choose to remove user B as a persisted friend if desired. 
         [0054]    In scenario D, at the initial time, Time  0 , user B is initially not within the proximate area of user A. As such, there is no relationship between users A and B. At Time  1 , user B comes within the proximate area of user A. Assuming that the conditions for adding user B as a transient friend of user A are satisfied, user B is then added as a transient friend of user A. Thereafter, at some time while user B is in the proximate area of user A, user A requests that user B be blocked. As such, user B is removed as a transient friend of user A and is thereafter prevented from being added as a transient friend of user A. 
         [0055]      FIG. 6  is a block diagram of an exemplary embodiment of the central server  12  of  FIG. 1 . In general, the central server  12  includes a control system  42  having associated memory  44 . In this embodiment, the transient friend processing function  24  is implemented in software and stored in the memory  44 . However, the present invention is not limited thereto. The central server  12  also includes one or more digital storage devices  46  such as, for example, one or more hard disk drives or the like. The user records  26  may be stored by the one or more digital storage devices  46 . Alternatively, the user records  26  may be stored remotely and be accessible to the central server  12 . The central server  12  also includes a communication interface  48  communicatively coupling the central server  12  to the network  18  ( FIG. 1 ). Lastly, the central server  12  includes a user interface  50 , which may include components such as, for example, a display, one or more user input devices, and the like. 
         [0056]      FIG. 7  is a block diagram of an exemplary embodiment of the mobile user device  14 - 1  of  FIG. 1 . This discussion is applicable to the other mobile user devices  14 - 2  through  14 -N and the stationary user device  16 . In general, the mobile user device  14 - 1  includes a control system  52  having associated memory  54 . In this embodiment, the social networking application  32 - 1  is implemented in software and stored in the memory  54 . However, the present invention is not limited thereto. As discussed above, the mobile user device  14 - 1  may also include the location determination function  34 - 1 . The mobile user device  14 - 1  also includes one or more digital storage devices  56  such as, for example, one or more hard disk drives or the like. The mobile user device  14 - 1  also includes a communication interface  58  communicatively coupling the mobile user device  14 - 1  to the network  18  ( FIG. 1 ). Lastly, the mobile user device  14 - 1  includes a user interface  60 , which may include components such as, for example, a display, one or more user input devices, a speaker, and the like. 
         [0057]    Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present invention. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.

Technology Classification (CPC): 7