1. Field
The described aspects relate to electronic and/or on-line communities, and more specifically to apparatus and methods of managing such communities.
2. Background
A distributed computer system, such as but not limited to the Internet, is characterized by rapid, real-time interchange among many dissimilar processes executing simultaneously on a large array of dissimilar and geographically diverse processors. A distributed computer system's resources are usually spatially separated, and the execution of its applications often involves multiple execution threads that can be widely separated in time.
The following presents a simplified summary in order to provide a basic understanding of some aspects of the present disclosure. This summary is not an extensive overview and is intended to neither identify key or critical elements nor delineate the scope of such aspects. Its purpose is to present some concepts of the described aspects in a simplified form as a prelude to the more detailed description that is presented later.
In accordance with one or more aspects and corresponding disclosure thereof, various features are described in connection with use of a client device, such as a handheld communication device, to interact with a tuple space distributed computing environment that assists in forming a community of users of such client devices. The tuple space addresses challenges presented by a distributing computing environment.
In one aspect, a method of forming a community of users comprises receiving a plurality of data tuples within a tuple space, wherein each of the plurality of data tuples comprises respective data attributes representing user-related data and a user identifier, and wherein the user-related data and the user identifier both correspond to a respective one of a plurality of users. Further, the method includes monitoring the received plurality of data tuples with a service tuple located within the tuple space, wherein the service tuple comprises at least one service attribute representing a relationship determination algorithm. Further, the method includes discovering, by the service tuple via the relationship determination algorithm, one or more relationships among the respective user-related data. Also, the method includes identifying respective ones of the plurality of users corresponding to each of the identified one or more relationships based on the user identifier corresponding to the respective user-related data associated with the respective relationship. Additionally, the method includes creating and storing within the tuple space, by the service tuple, a community tuple for each of the identified one or more relationships, wherein each community tuple comprises community attributes representing the respective identified relationship and the respective identified ones of the plurality of users of the respective community tuple.
In a related aspect, at least one processor includes one or more modules for implementing the above-noted actions of the method.
In another related aspect, a computer program product comprises a computer readable medium including one or more sets of instructions for causing a computer to carry out the above-noted actions of the method.
In another aspect, an apparatus comprises means for receiving a plurality of data tuples within a tuple space, wherein each of the plurality of data tuples comprises respective data attributes representing user-related data and a user identifier, and wherein the user-related data and the user identifier both correspond to a respective one of a plurality of users. Further, the apparatus includes means for monitoring the received plurality of data tuples, wherein the means for monitoring is located within the tuple space, and wherein the means for monitoring comprises at least one service attribute representing a relationship determination algorithm. Also, the apparatus includes means for discovering, by the means for monitoring via the relationship determination algorithm, one or more relationships among the respective user-related data. Further, the apparatus includes means for identifying respective ones of the plurality of users corresponding to each of the identified one or more relationships based on the user identifier corresponding to the respective user-related data associated with the respective relationship. Additionally, the apparatus includes means for creating and storing within the tuple space a community tuple for each of the identified one or more relationships, wherein each community tuple comprises community attributes representing the respective identified relationship and the respective identified ones of the plurality of users of the respective community tuple.
In yet another aspect, an apparatus comprises a processor and a memory in communication with the processor. Further, the apparatus comprises a community formation module stored in the memory and executable by the processor, wherein the community formation module comprises a tuple space and a service tuple. The tuple space is operable to receive a plurality of data tuples each comprising respective data attributes representing user-related data and a user identifier, wherein the user-related data and the user identifier both correspond to a respective one of a plurality of users. Further, the service tuple comprises at least one service attribute representing a relationship determination algorithm. And, upon execution by the processor, the service tuple is operable to monitor the plurality of data tuples received within the tuple space, discover one or more relationships among the respective user-related data via the relationship determination algorithm, identify respective ones of the plurality of users corresponding to each of the identified one or more relationships based on the user identifier corresponding to the respective user-related data associated with the respective relationship, and create and store within the tuple space a community tuple for each of the identified one or more relationships, and wherein each community tuple comprises community attributes representing the respective identified relationship and the respective identified ones of the plurality of users of the respective community tuple.
To the accomplishment of the foregoing and related ends, one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative aspects and are indicative of but a few of the various ways in which the principles of the aspects and versions may be employed. Other advantages and novel features will become apparent from the following detailed description when considered in conjunction with the drawings and the disclosed versions are intended to include all such aspects and their equivalents.
The described aspects relate to a user community, such as an on-line or electronic community that communicatively connects users having common interests. For example, such a community includes a website, a chat room, a mail group, an instant messaging group, a virtual meeting group, a text messaging group, a telephonic group call group, a fax group, a blog group, etc. The described aspects, in some cases, provide for the automatic and/or the autonomous discovery and creation of a respective community. Further, the described aspects, in some cases, allow for the discovery and creation of a respective community based on disparate and/or multi-source data. Additionally, the described aspects incorporate a flexible space-based data repository operable to receive data objects representing the data. Thus, the described aspects provide a simple and efficient method and apparatus for discovering, creating, and managing user communities.
In the subject description, the word “exemplary” is used to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion.
Referring to
In particular, tuple space 12 comprises a data repository, and each of service tuple 14, data tuple 16, and community tuple 18 comprises an object having an ordered set of data comprising a tuple type 20 and tuple attributes 22. Specifically, tuple type 20 comprises an identifier of the type and/or class of the tuple, such as a service class, a data class, and a community class. Further, tuple attributes 22 may vary depending on tuple type 20. For example, referring to
Further, community tuples 18 may be discovered by each of the plurality of users 28 through interaction of the corresponding client device 30 with tuple space 12, whereby each respective user 28 may join an interactive community of users defined by the respective community tuple 18, for example, via a respective community portal 38. For example, the interaction resulting in the discovery of a respective community tuple 18 may include a search for community tuples 18 initiated by client device 30, and/or receipt of a message, generated by service tuple 14 and/or community tuple 18 and/or an operator 40 of system 10, wherein the message informs the respective client device 30, and hence the respective user 28, of the relationship to the user community defined by the respective community tuple 18. As such, a respective user 28 is able to accept or refuse participation in an on-line and/or electronic user community potentially of interest to the respective user 28 based on commonality 34 defined by the discovered relationship between corresponding user-related data 24.
Thus, system 10 enables the discovery, creation and management of user communities based on relationships between data tuples 16 received by tuple space 12.
A “tuple space” is a globally shared, associatively addressed memory space that is organized as a grouping of tuples. A “tuple” is the basic element of a tuple space system. In the context of a tuple space based coordination language like Linda, a tuple is a vector having fields or values of certain types. In a broader sense, a “tuple” is an entry in an information storage system. For example, a row in a relational database system can be referred to as a tuple.
In Linda-like languages, constructs called “templates” are used to associatively address tuples via matching techniques. A template matches a tuple if they have an equal number of fields and if each template field matches the corresponding tuple field.
Tuple space based coordination languages provide a simple yet powerful mechanism for inter-process communication and synchronization, which is the crux of parallel and distributed programming. A process with data to share generates a tuple and places it into the tuple space. A process requiring data simply requests a tuple from the tuple space.
Tuple space programs may be easier to write and maintain for a number of reasons including the following:
(1) Destination uncoupling (fully anonymous communication)—the creator of a tuple requires no knowledge about the future use of that tuple or its destination.
(2) Spatial uncoupling—because tuples are retrieved using an associative addressing scheme, multiple address-space-disjoint processes can access tuples in the same way.
(3) Temporal uncoupling—tuples have their own life span, independent of the processes that generated them or any processes that may read them. This enables time-disjoint processes to communicate seamlessly.
Tuple space based coordination languages can provide the essential features (spatial and temporal separation) required for many different types of distributed applications, especially for use over the Internet. Developed by scientists and academicians, the Internet was originally used to share research information and to collaborate. However, the Internet now encompasses millions of world-wide computers networked together.
There are two distinct types of implementations of tuple space based coordination languages (e.g. Linda), characterized as being either “closed” or “open.” The closed implementations use compile time analysis of object and source code to provide highly efficient closed programs. The open implementations allow processes, agents, and programs to coordinate through tuple spaces without the run-time system requiring any prior knowledge. Essentially, the open implementations provide a persistent data store.
The Linda language uses three standard instructions or primitives. These are (with their informal semantics):
(1) out(tuple) Insert a tuple into a tuple space.
(2) in(template) If a tuple exists that matches the template, then remove the tuple and return it to the agent performing the in. If no matching tuple is available, then the primitive blocks until a matching tuple is available.
(3) rd(template) If a tuple exists that matches the template, then return a copy of the tuple to the agent that performed the rd. If there is no matching tuple, then the primitive blocks until a matching tuple is available.
Referring back to
Further, in a specific example, each tuple 14, 16 and 18 is an instance of a com.qualcomm.qspaces.linda.Tuple class or subclass, and is created with a set of attributes 22, defined by an array of objects which are specified when the tuple is constructed. The array can be zero-length, however, in some aspects, the array may not be null. In addition, in some aspects, none of the individual attribute objects in the array may be null.
In some aspects, when the respective tuple 14, 16, and 18 is first constructed, and every time the respective attributes 22 are retrieved from the respective tuple, the array of objects may be defensively copied using a very fast form of in-memory serialization. This process allows the respective tuple 14, 16 and 18 to be immutable, and therefore, guarantees the integrity of tuple space 12 in which the respective tuple 14, 16, and 18 resides.
In the above-noted aspects, tuple equality adheres to the same equality principles of any JAVA object, including the symmetry rule which states that if t1.equals(t2) then t2.equals(t1).
Specifically, a tuple equals another tuple, e.g. t1.equals(t2), if t2, known as a template, meets the following criteria:
1) The class 20 of the template t2 is the same class 20 as the tuple t1.
2) The attributes 22 of the template t2 are equal to the attributes 22 of the tuple t1, meaning that t2's attributes 22 are the same as t1's attributes 22, irrespective of their order.
In other aspects, a tuple matches another tuple, e.g. t1.matches(t2), if t2, known as a template, meets the following criteria:
1) The class 20 of the template t2 is the same class 20 or a super class of the tuple t1.
2) The attributes 22 of the template t2 match the attributes 22 of the tuple t1, meaning that t2's attributes 22 are the same set or a subset of t1's attributes 22, irrespective of their order.
When matching one tuple with another, the symmetry rule does not apply; so, t1.matches(t2) does not necessarily equate to t2.matches(t1).
In some aspects, the comparison of one set of tuple attributes 22 with another uses the normal object equality rules, so any object used as a tuple attribute 22 must correctly implement the object.equals(Object obj) and object.hashcode( ) methods.
A respective tuple 14, 16, or 18 is added to tuple space 12 with a lease 42 (
Service tuples 14 represent services that interact with by clients of the tuple space 12, such as client devices 30. Further, service tuples 14 are also autonomous “live” JAVA objects in their own right, which may also interact with tuple space 12 and other tuples in the space. Service tuples 14 may be discovered in the same manner as other tuples, e.g. by matching the class 20 and attributes 22 of the tuple. In some aspects, service tuples 14 may not be used in this way, however, rather service tuples 14 are interacted with indirectly by placing other tuples, such as data tuples 16, into tuple space 12.
For example, a client, such as a respective client device 30, may create data tuple 16 of class A with attributes abc and 123, and places the tuple into tuple space 12. As such, data tuple 16 can be described using the following notation:
(A, “abc”, 123).
As described previously, service tuple 14 is a live object which can interact with tuple space 12 in the same way as a client application. As such, in this example, service tuple 14 has been instantiated and is blocking on a read from tuple space 12 for any tuples with a matching template 44 for class A and any attributes. Such a matching criterion can be described as follows:
(A, ?s, ?x)
where ?s and ?x mean that any values of the string s and the integer x will be matched. Consequently, tuple space 12 matches the template from service tuple 14, and will then read tuple A from tuple space 12. In this manner, the described aspects pass parameters in the form of tuples to a service.
More specifically, in the described aspects, service tuple 14 (
As noted above, and as with any other tuple in tuple space 12, community tuple 18 may be discovered by placing within tuple space 12 another tuple having a template defining a community class tuple and any attributes. For example, in system 10, operator 40, a respective client device 30, and/or any other party operating within system 10 may place such a community search tuple 52 (
Further, operator 40, a respective client device 30, and/or any other party operating within system 10 may define a respective communications portal 38 operable to enable communications between respective users 30 having membership 36 in the respective community represented by community tuple 18. For example, communications portal 38 may include a website, an email client, an instant messaging client, a short message service client, etc.
Additionally, since commonality 34 of a given community represented by a respective community tuple 18 may be discovered, communication portal 38 may include advertising 58, and more specifically, directed advertising aimed at matching one or more interests of the corresponding community of users and based on commonality 34.
Further, in system 10, it is possible to embed objects that represent user interfaces into the service objects themselves. Indeed, several user interface objects of different types may be placed into a single service object.
Consider the following user interface service tuple:
(A, [Java], [Flash], [uiOne])
This user interface service tuple, A, contains 3 user interface objects, defined in JAVA, ADOBE Flash and uiOne™ technologies developed by QUALCOMM Incorporated of San Diego, Calif. In the context of mobility, the present aspects enable the offering of a service across a wide variety of wireless devices, each with its own specific requirements, whether in terms of support of different technologies such as Java, Flash or uiOne, or even multiple variants of a single technology, optionally including optimizations for screen size or other device-specific properties.
A respective client device (and corresponding application) 30, operator 40, and/or any other party to system 10, is thus able to locate a user interface service object and then load user interface components from it, for example, in order to communicate according to the given parameters of a respective communication portal 38.
Referring back to
In one aspect, system 10 may be implemented in a communications network that includes a cellular phone network.
Referring to
Network device or server 70 and/or storage device 72 and/or data source 60 may be present on communications network 200 with any other network components that are desired to provide community management capabilities and/or cellular telecommunication services. Network device or server 70 and/or storage device 72 and/or data source 60 may communicate with carrier network 206 through a data links 210 and 212, which may be data links such as the Internet, a secure LAN, WAN, or other network. Carrier network 206 controls messages (generally being data packets) sent to a mobile switching center (MSC) 214. Further, carrier network 206 communicates with MSC 214 by a network 212, such as the Internet, and/or POTS (plain old telephone service). For example, in network 212, a network, or Internet portion transfers data, and the POTS portion transfers voice information. MSC 214 may be connected to multiple base stations (BTS) 216 by another network 218, such as a data network and/or Internet portion for data transfer and a POTS portion for voice information. BTS 216 ultimately broadcasts messages wirelessly to the wireless communication devices 30, for example using predetermined voice and/or data packet services, such as Code Division Multiple Access (CDMA) and short messaging service (SMS), respectively, or any other over-the-air methods.
Thus, communication network 200, in combination with system 10, allow for the discovery, creation and management of electronic or on-line user communities based on relationships discovered between data objects in a tuple space. Further, communication network 200, in combination with system 10, allow for interaction among the identified users of a respective user community.
In
The various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Additionally, at least one processor may comprise one or more modules operable to perform one or more of the steps and/or actions described above.
Further, the steps and/or actions of a method or algorithm described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium may be coupled to the processor, such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. Further, in some aspects, the processor and the storage medium may reside in an ASIC. Additionally, the ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal. Additionally, in some aspects, the steps and/or actions of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a machine readable medium and/or computer readable medium, which may be incorporated into a computer program product.
While the foregoing disclosure discusses illustrative aspects, it should be noted that various changes and modifications could be made herein without departing from the scope of the described aspects as defined by the appended claims. Furthermore, although elements of the described aspects may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated. Additionally, all or a portion of any aspect may be utilized with all or a portion of any other aspect, unless stated otherwise.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the disclosed subject matter have been described with reference to several flow diagrams. While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the claimed subject matter is not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement the methodologies described herein. Additionally, it should be further appreciated that the methodologies disclosed herein are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.
It should be appreciated that any patent, publication, or other disclosure material, in whole or in part, that is said to be incorporated by reference herein is incorporated herein only to the extent that the incorporated material does not conflict with existing definitions, statements, or other disclosure material set forth in this disclosure. As such, and to the extent necessary, the disclosure as explicitly set forth herein supersedes any conflicting material incorporated herein by reference. Any material, or portion thereof, that is said to be incorporated by reference herein, but which conflicts with existing definitions, statements, or other disclosure material set forth herein, will only be incorporated to the extent that no conflict arises between that incorporated material and the existing disclosure material.
The present application for patent claims priority to Provisional Application No. 60/945,091 entitled “Apparatus and Method of Managing Communities of Users” filed Jun. 19, 2007, and assigned to the assignee hereof and hereby expressly incorporated by reference herein. The present application for patent is related to the co-pending U.S. patent application Ser. No. ______, entitled “User Interfaces For Service Object Located In A Distributed System” by Jackson et al., having Attorney Docket No. 070833, filed on even date herewith, assigned to the assignee hereof, and expressly incorporated by reference herein, and U.S. patent application Ser. No. ______, entitled “Persistent Personal Messaging in a Distributed System” to Jackson et al., having Attorney Docket No. 072275, filed on even date herewith, assigned to the assignee hereof and hereby expressly incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
60945091 | Jun 2007 | US |