Method and apparatus for identifying network functions based on user data

Techniques for identifying network functions include determining first data that indicates a concept represented in content provided by a device. A function provided by a network service is determined based on the first data. In some embodiments, techniques include forming a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

BACKGROUND

Service providers and device manufacturers (e.g., wireless, cellular, etc.) are continually challenged to deliver value and convenience to consumers by, for example, providing compelling network services. Many device manufacturers have invited independent parties to develop software applications for the hardware platforms produced by those manufacturers; for example, to accelerate the number of applications that can be offered to users of the platform in a short time after the platform is introduced. Such applications often rely on backend services available over a communications network, such as mapping services, points of interest services, telephone number lookup services, exchange rate services, image processing services, facial recognition services, music identification services, among hundreds or even thousands of other backend services. These services typically are invoked using a particular application programming interface (API) accessed over the communication network through a particular messaging protocol. It can become very challenging for an application developer to identify the backend services appropriate for supporting the application.

SOME EXAMPLE EMBODIMENTS

Therefore, there is a need for an approach for identifying network functions based on user data, called content hereinafter, such as sound clips and photographs on a user device or based on context, such as time, location and activity, as determined on the user device, or both.

According to one embodiment, a method comprises determining first data that indicates a concept represented in content provided by a device. The method further comprises determining, based on the first data, a function provided by a network service.

According to another embodiment, an apparatus comprises at least one processor, and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause, at least in part, the apparatus to determine first data that indicates a concept represented in content provided by a device. The apparatus is further caused to determine, based on the first data, a function provided by a network service.

According to another embodiment, a method comprises facilitating access to at least one interface configured to allow access to at least one service. The at least one service is configured to perform at least determining first data that indicates a concept represented in content provided by a device. The at least one service is configured also to determine, based on the first data, a function provided by a different network service.

According to another embodiment, a computer-readable storage medium carrying one or more sequences of one or more instructions which, when executed by one or more processors, cause, at least in part, an apparatus to determine first data that indicates a concept represented in content provided by a device. The apparatus is further caused to determine, based on the first data, a function provided by a network service.

According to another embodiment, an apparatus comprises means for determining first data that indicates a concept represented in content provided by a device. The apparatus further comprises means for determining, based on the first data, a function provided by a network service.

According to one embodiment, a method comprises forming a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

According to another embodiment, an apparatus comprises at least one processor, and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause, at least in part, the apparatus to form a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

According to another embodiment, a method comprises facilitating access to at least one interface configured to allow access to at least one service. The at least one service is configured to form a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

According to another embodiment, a computer-readable storage medium carrying one or more sequences of one or more instructions which, when executed by one or more processors, cause, at least in part, an apparatus to form a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

According to another embodiment, a computer program product includes one or more sequences of one or more instructions which, when executed by one or more processors, cause an apparatus to at least perform the steps of one or more of the above methods.

According to another embodiment, an apparatus comprises means for forming a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept. The apparatus also comprises means for means for forming a data structure that associates each function of the plurality of functions provided by the plurality of network services with at least one identifier for a device context.

DESCRIPTION OF SOME EMBODIMENTS

As used herein, the term content refers to refers to any digital data, including data that can be presented for human perception, for example, digital sound, songs, digital images, digital games, digital maps, point of interest information, digital videos (such as music videos, news clips and theatrical videos), documents, advertisements, program instructions or data objects, any other digital data, or any combination thereof. Content is stored in one or more data structures, such as files or databases. Although various embodiments are described with respect to identifying network functions appropriate for a digital photograph, it is contemplated that the approach described herein may be used with other types of content, such as sound recordings, video recordings, game data and files retrieved from the network, among others.

FIG. 1is a diagram of a system100capable of identifying network functions based on content and context on user equipment, according to one embodiment. User equipment101has connectivity to one or more user oriented network services110athrough110n(collectively referenced hereinafter as services110) by means of one or more client processes such as World Wide Web browser107or client process112communicating over communications network105. UE101also includes context engine103that determines the local context of UE101and any user thereof, such as local time, geographic position from a positioning system, ambient temperature, pressures, sound and light, and applications currently executing on UE101, content currently being rendered on UE101, and user input through a user interface (UI).

By way of example, the communication network105of system100includes one or more networks such as a data network (not shown), a wireless network (not shown), a telephony network (not shown), or any combination thereof. It is contemplated that the data network may be any local area network (LAN), metropolitan area network (MAN), wide area network (WAN), a public data network (e.g., the Internet), short range wireless network, or any other suitable packet-switched network, such as a commercially owned, proprietary packet-switched network, e.g., a proprietary cable or fiber-optic network, and the like, or any combination thereof. In addition, the wireless network may be, for example, a cellular network and may employ various technologies including enhanced data rates for global evolution (EDGE), general packet radio service (GPRS), global system for mobile communications (GSM), Internet protocol multimedia subsystem (IMS), universal mobile telecommunications system (UMTS), etc., as well as any other suitable wireless medium, e.g., worldwide interoperability for microwave access (WiMAX), Long Term Evolution (LTE) networks, code division multiple access (CDMA), wideband code division multiple access (WCDMA), wireless fidelity (WiFi), wireless LAN (WLAN), Bluetooth®, Internet Protocol (IP) data casting, satellite, mobile ad-hoc network (MANET), and the like, or any combination thereof.

The client-server model of computer process interaction is widely known and used. According to the client-server model, a client process sends a message including a request to a server process, and the server process responds by providing a service. The server process may also return a message with a response to the client process. Often the client process and server process execute on different computer devices, called hosts, and communicate via a network using one or more protocols for network communications. The term “server” is conventionally used to refer to the process that provides the service, or the host computer on which the process operates. Similarly, the term “client” is conventionally used to refer to the process that makes the request, or the host computer on which the process operates. As used herein, the terms “client” and “server” refer to the processes, rather than the host computers, unless otherwise clear from the context. In addition, the process performed by a server can be broken up to run as multiple processes on multiple hosts (sometimes called tiers) for reasons that include reliability, scalability, and redundancy, among others. A well known client process available on most nodes connected to a communications network is a World Wide Web client (called a “web browser,” or simply “browser”) that interacts through messages formatted according to the hypertext transfer protocol (HTTP) with any of a large number of servers called World Wide Web servers that provide web pages. For example, in some embodiments, the network services110are World Wide Web servers, and the UE101each include the browser107with which to obtain those services.

The user oriented services110employ one or more backend services120athrough120n(collectively referenced hereinafter as backend services120) through corresponding application programming interfaces (APIs)122athrough122n(collectively referenced hereinafter as backend API122). Many backend services publish their network addresses and APIs and message protocols in a service registry128. For example, a web services registry includes UDDI (Universal Description, Discovery and Integration), which is interrogated by Simple Object Access Protocol (SOAP) messages to provide access to Web Services Description Language (WSDL) documents describing the protocol bindings and message formats required to interact with the web services listed in its directory.

In order to provide a user oriented application for UE101, an application developer (which may be an individual or a team of individuals) writes a client process, such as client process112, to interact with the backend services120, either directly, or indirectly through a user oriented service110also written by the developer; and delivers the client process to the UE101. In some cases, the application developer relies on the browser107on the UE101for a user interface and writes the user oriented network service110that interacts with one or more backend services120; and simply delivers to the UE101a link for the service110. Knowledge of all the backend services120and their corresponding API, and corresponding protocols, often requires a great deal of experience from a technical savvy developer. Invoking a large number of these backend services may also involve a lot of storage and processing on the UE101or host of the service110.

In addition, for some user oriented applications, an appropriate action by the application depends on particular content chosen by the user for operation by the application, e.g., whether the user has taken a photograph of a building or a corn field or a group of persons. The backend service120to be invoked often depends on what is represented by the content; for example, a facial recognitions service and a movie ticket reservation service are not likely appropriate for a picture of a corn field provided by a user. Anticipating all such user provided contents and programming interfaces to all appropriate backend services would render many user oriented applications exceedingly large and complicated, and, thus, delay the development and delivery of such applications. Consequently, user oriented applications would benefit from a way to uniformly or dynamically identify appropriate functions of backend services120, or both.

To address this problem, the system100ofFIG. 1introduces the capability to identify network functions based on content and context on user equipment. In the illustrated embodiment, the expanded capability includes the function lookup service130and a function-concept-context data structure134. The illustrated function lookup service130includes its own API132, and zero or more indices136, and serves as a single gateway for multiple backend services120. The indices136, if present, allow the function lookup service130to efficiently find, in the data structure134, a backend service related to the user's current content or context or both. The function lookup service130provides one or more backend services120that can be looked up in service registry128and invoked by a client112or user oriented service110. The new function lookup service130uses features extracted from user supplied content and associated with the advanced backend services120in the function-concept-context storage134in order to suggest appropriate functions of the backend services120. The client112or user oriented service110determines a particular backend service120, or function thereof, based on the functions provided, and determines values for any parameters required by the backend service120and sends those values in accordance with the API122and corresponding protocol. The function-concept-context data structure134and function lookup service130are example means to achieve the advantage of simplifying the processes in client112and corresponding user oriented service110, if any, while providing a wide range of backend services120. The client process112thus consumes much less memory to provide the wide range of backend services than would a client that explicitly supported each of those backend services.

FIG. 2Ais a diagram of a data structure entry200for storing a function in association with one or more concepts or contexts. Although data structures and fields are shown inFIG. 2AandFIG. 2Bas integral blocks in a particular order for purposes of illustration, in other embodiments, one or more data structures or fields, or portions thereof, are arranged in a different order in one or more data structures or databases on one or more nodes of a network, or are omitted, or one or more additional fields are added, or the data structures are changed in some combination of ways.

In the illustrated embodiment entry200includes a service identifier (ID) field202, a function identifier (ID) field204, an API identifier (ID) field206, a protocol field208, a parameters field210, a description field220, a media type field230, a relevant concepts field240and a relevant contexts field250.

The service ID field202holds data that indicates one of the backend services120. Any method to identify the backend service in field202may be used, such as network address for the service (e.g., an Internet Protocol, IP, address and Transfer Control Protocol port; or a protocol-domain name-directory-filename), or a key into the service registry128associated with that backend service, as is well known in the art. The function ID field204holds data that indicates an individual function, if any, of a backend service indicated in field202. The API ID field206holds data that indicates an API for the function indicated in field204, such as a network address where the API is published or an identifier for the API set itself within the service. The function is part of the particular API set. The protocol field208holds data that indicates a message protocol for exchanging data with the API indicated in field206. In some embodiments, the API or protocol, or both, are available at the service registry128at the key indicated in field202; and field206, or field208, or both, respectively, are omitted. Including the fields206or208or both are example means of achieving the advantage of reducing network bandwidth to invoke a function of a backend service. Omitting field206or field208or both are example means of achieving the advantage of reducing the storage footprint of the function-concept-context data structure134.

The parameters field210holds data that indicates the input parameters (for which values are to be provided to the function) and output parameters (for which values are output from the function indentified in fields202and204). For example, the parameters field210holds data that indicates input and output parameter names, units, and valid ranges, and default values, if any. In some embodiments, the parameters are available at the service registry128at the key indicated in field202; and field210is omitted. Including the field210is an example means of achieving the advantage of reducing network bandwidth to invoke a function of a backend service. Omitting the field210is an example means of achieving the advantage of reducing the storage footprint of the function-concept-context data structure134.

The description field220holds data such as text that describes the operation performed by the function indentified in fields202and204, which can be understood by an end user of UE101. For example, the description field220holds text that states “Determine street address corresponding to GPS coordinates,” “Provide maps for a given location,” “Determine celebrity in a photo showing that celebrity's face,” “Reserve tickets for shows at a participating theater,” “Book plane ticket to destination city,” “Reserve table at a participating restaurant,” “Determine title and artist of recording similar to sound sample,” “Determine market buying and selling prices for stocks and bonds,” “Determine market buying and selling prices for commodity,” “Determine retail outlet for a product,” “Provide recipes that include given ingredients,” “Issue payment from a bank account,” etc. In some embodiments, the description is available at the service registry128at the key indicated in field202; and field220is omitted. Including the field220is an example means of achieving the advantage of reducing network bandwidth to present to a user of UE101a function of a backend service. Omitting the field220is an example means of achieving the advantage of reducing the storage footprint of the function-concept-context data structure.

The media type field230holds data that indicates the types of media on which the function operates, e.g., image file formats, audio file formats, video file formats, word processing document formats, spreadsheet formats, mark-up language formats, among others. This information is used as a discriminator, in some embodiments, to filter out functions that do not operate on the content provided by a user. In some embodiments, the media types are available at the service registry128at the key indicated in field202; and field230is omitted. Including the field230is an example means of achieving the advantage of reducing network bandwidth to determine an appropriate function of a backend service. Omitting the field230is an example means of achieving the advantage of reducing the storage footprint of the function-concept-context data structure.

The relevant concepts field240holds data that indicates which concepts, such as physical objects, of a concept identification library are relevant to the function identified in fields202and204. Concept libraries of concepts that can be identified in images, audio or text are known. As used herein a concept is an entry in a semantic or object library and can represent tangible objects, such as persons and cars, or intangible objects such as stocks and bonds, or actions, such as skiing, swimming. Often the concepts are grouped into categories such as vehicles or buildings or aquatic or airborne etc. In some embodiments, the concepts entered in the relevant concepts field240are the specific concepts or concept categories that the function applies to. For example, person concepts are relevant to facial recognition functions and voice recognition functions (media type=images or audio, respectively), while foodstuffs are relevant to recipes functions (media type=text indicating foodstuff), and buildings are relevant to ticket purchase and table reservations (media type=text indicating building), and products are relevant to retail outlet functions (media type=text indicating product). In some embodiments, concepts are expressed in terms of an object or semantic vocabulary, or both, as described in more detail below. In some embodiments, the concept is a concept of a semantic vocabulary, such as stocks or bonds. The concepts exist outside of, and independent of, their digital representations in the content provided by the user. Field240is an example means of achieving the advantage of associating a function of a backend system with a concept that may be represented in user content. Field240may be omitted in some embodiments that select functions purely on context and not on objects or other concepts represented in content.

The relevant context field250holds data that indicates temporal or spatial or activity information that is relevant to the function identified in fields202and204. In some embodiments, context is expressed in terms of a context vocabulary, as described in more detail below, such as Monday, 10 AM, GPS position, communicating, operating on document, idle, absent, etc. Often the context includes context subjects associated with certain combinations of context vocabulary words, as described in more detail below, such as working, exercising, sleeping, eating, recreating. For example, time of day and day of week are relevant for banking functions, location is relevant to retail outlet functions as well as ticket purchase and table reservations functions; season of year is relevant to recipes functions. Communication activities are relevant to text to speech or speech to text conversion functions. Field250is an example means of achieving the advantage of associating a function of a backend system with a context that may be associated with a user of a device, such as UE101. Field250may be omitted in some embodiments that select functions purely on concepts represented in content, and not on context.

Any method may be used to indicate the context in field250. In various embodiments, a context vocabulary and topology is developed that identifies words and topics related to consumers' contexts. Any method known in the art may be used to generate the context vocabulary and topology. For example, several documents are collected that discuss and describe consumer context, such as documents that describe the significance of whether the consumer is working for pay or performing other duties or at leisure, whether the current time is a weeknight or weekend, whether the current season is summer or winter, whether the consumer is at home or away, or whether the consumer is at a destination or en route, whether a document is invoking a place name or a person name, whether the consumer is stationary or moving and at what speeds and directions, whether it is light or dark, and what applications are available on a user equipment belonging to the consumer. These documents are mined to determine words related to consumer context, collections of words related to context, or relative usage of those words, or some combination. In some embodiments, the vocabulary topology includes topics imposed on or deduced from relative occurrences of words within the documents. For example, in various embodiments, probabilistic latent semantic indexing (pLSI) or latent Dirichlet allocation (LDA), well known in the art, are used to deduce topics from words in a set of documents. Such methods can be used to derive context words and context topics from a set of documents that are directed to the circumstances of consumers of network services. Because each topic is associated with a group of words in certain relative abundances, there is a topology relating topics to words and subtopics to higher level topics. In some embodiments a context vocabulary is built manually or by relying on or extending some standard topology such as Open Directory Project (ODP) vocabulary. In these embodiments, LDA is not used in building the context vocabulary itself; but, once a vocabulary is established, documents can be mined using LDA to see what topics/context is contained within the document. The context vocabulary topology is used in various embodiments described herein to determine UE101and backend services contexts.

In some embodiments, there are only two levels of categories, e.g., topics and words, below the root level context vocabulary. Each topic is defined by a set of words, each with a particular range of occurrence percentages. In some of these embodiments, a vocabulary of V words is represented by a V-dimensional vector; and each word is represented by a V-dimensional vector with zeros in all positions but the position that corresponds to that particular word. Typically words of low meaning, such as articles, prepositions, pronouns and commonly used words are ignored. Each of T topics is represented by a V-dimensional vector with relative occurrences of each word in the topic represented by a percentage in the corresponding word positions. All topics are represented by a V×T matrix.

When a word from the context vocabulary is found in a document (e.g., a document describing a backend service120), that word is considered a mixture of the different topics that include that word, with a percent probability assigned to each topic based on the percentage of words in the document, for example using the well known methods of LDA. As a result, the entire document can be represented by a set of topics found in the document with a probability metric assigned to each topic, e.g., a T-dimensional vector with varying probabilities in each position of the vector. Such a vector is called a token herein. Two documents (such as a description of a backend service and a description of the current state of a UE101) can be compared by computing a similarity of the two T-dimensional vectors (tokens) representing those documents, such as a sum of products of corresponding terms. Alternatively, or in addition, a distance metric can be computed between the two documents, which increases as the two tokens become less similar. Any distance metric can be used, such as an order zero distance (absolute value of the coordinate with the largest difference), an order 1 distance (a sum of the absolute values of the T differences,) an order two distance (a sum of the squares of the T differences—equivalent to the Euclidean distance), an order three distance (a sum of cubes of absolute values), etc. The more similar are tokens from two documents, or the smaller the distance between those tokens, the more relevant are the documents to each other. In the following description, it is assumed that a context vocabulary has been defined and is stored in a context vocabulary data structure. The context of a document or resource is represented by a context token. The more similar the context tokens of two documents, e.g., the smaller the distance measure between them, the more relevant one document is to the consumer context indicated by the other document.

Context is not obtained only from mining a user text base but more often directly on context data from the device. Thus, in some embodiments, context vocabulary is defined based on output from the context engine103which reflects all context that can be inferred from the device side, e.g., as user location, current activity, transport mode (in car, in bus, driving etc), relations (social contacts), abstracted locations such as home, work etc.

For purposes of illustration, it is assumed that there is a context vocabulary data structure (not shown) available to describe context. It is further assumed that there is a different, whole-language, semantic vocabulary data structure (not shown) for all concepts of a language, such as is used in modern search engines. It is further assumed that, in some embodiments, objects are also represented by an objects vocabulary and topics in an objects data structure (not shown), for which object tokens are defined. In some embodiments, there is also a mapping between the concept vocabulary and topics, and the concepts in a database relating physical objects and other concepts to features extracted from different media, as described in more detail below.

Thus in some embodiments, the data in the relevant contexts field250is a list of one or more context tokens for the function indicated by field202and204. Similarly, in some embodiments, the data in the relevant concepts field240is a list of one or more concept tokens for the function indicated by field202and204.

FIG. 2Bis a diagram of a data structure260for storing an index for a function-concept-context data structure. Data structure260is an example embodiment of indices data structure136. When a concept is identified in content provided at UE101by a user, it is often expensive in computational resources to search every entry200in data structure134for that concept. Therefore, in some embodiments an index is derived from the function-concept-context entries200for each concept, or category of concepts, or both, or for each concept topic. Similarly, in some embodiments, an index is derived from the function-concept-context entries200for each context, or context subject, or both, or for each context topic. The indices260are example means to achieve the advantage of reducing computational costs to find the functions that are related to a known concept or context.

In the illustrated embodiment, the data structure260includes multiple indices. The first index includes a concept identifier field262and a matching function IDs field264for each concept or category or both in the concepts database, as indicated by ellipsis. The concept identifier field262holds data that indicates a concept ID or category from the database or vocabulary of concepts. The matching function IDs field264holds data that lists a function ID (as indicated by fields202and204) for each function that includes the concept or category in the relevant concepts field240. In some embodiment only functions in which the probability of the concept topic is greater than a threshold probability are included in the list.

Similarly, a second index includes a context field272and a matching function IDs field274for each context word or subject or both in the context vocabulary, as indicated by ellipsis. The context field262holds data that indicates context vocabulary word or subject from the context vocabulary. The matching function IDs field274holds data that lists a function ID (as indicated by fields202ad204) for each function that includes the context in the relevant contexts field250. In some embodiment only functions in which the probability of the context topic is greater than a threshold probability are included in the list.

FIG. 3Ais a diagram of modules310of a client process for using a backend function based on content or context at the client, according to one embodiment. By way of example, the client112on UE101includes one or more components for providing content and context to the function lookup service and presenting a suggested function to a user of UE101for implementing an application on the UE101. It is contemplated that the functions of these components may be combined in one or more components or performed by other components of equivalent functionality, for example on a user oriented service110or within the function lookup service130. In the illustrated embodiment, the client modules310include a graphical user interface (GUI) module311for interacting with a user of UE101, a context engine interface module313for interacting with a context engine103on the UE101, a content generator module315to provide content to be used by the application, a media identifier module317for determining the media type of the content generated by module315, and a service interface module319for interacting with a user oriented service110.

The GUI module311presents graphical elements on a display of the UE101and detects user operation of one or more input devices, such as a touch screen, to allow the user of UE101to control the content generator and select a function identified based on the generated content. The context engine interface module313interacts with the context engine103to determine the temporal, spatial and activity conditions of the UE101. In some embodiments, the GUI module311comprises markup statements and forms in a web page sent to browser107.

The content generator315produces content to be used by the application for the UE101, such as a file transfer process that downloads content from a service110, an audio capture process to generate an audio file from sound detected on a microphone of the UE101, an image or video captures process to generate an image or video file from a digital camera, a user input capture process to generate a text file or document file or spreadsheet or drawing file based on user operation of one or more input devices. The media type identifier module317determines the type of media of the content produced by content generator module315.

The user oriented service interface module319interacts with a user oriented service110that participates in the UE101application, if any. In some embodiments, the user oriented service110is omitted; and the user oriented service modules320are divided between the client112and the function lookup service130; and, the user oriented service interface module319is replaced by a function lookup service interface module.

Once the user has been presented through the GUI module311with a choice of one or more functions returned by the interface module319, and chosen which function to use, the client112or user oriented service110will fill in missing input parameters for that function, e.g., based on the current context or concept represented, or both. If a parameter value cannot be determined automatically, the GUI module311causes the user to be prompted to fill in any remaining fields. Once all the parameters are filled, the client112, or user oriented service110, passes the information for the selected function to the backend service120to service the request. The results are either directly sent to client112by the backend service120or passed on through the user oriented service110or function lookup service130.

FIG. 3Bis a diagram of modules320of a user oriented service110, according to one embodiment. By way of example, a user oriented service110includes one or more components for providing content and context to the function lookup service and presenting a suggested function to a user of UE101for implementing an application on the UE101. It is contemplated that the functions of these components may be combined in one or more components or performed by other components of equivalent functionality, for example on the client process112or within the function lookup service130. The user oriented service modules320include a client interface module321, a media feature extractor module323, and concept identification module325with a concept-features data structure327, a function lookup service interface328, and a service registry interface module329.

The client interface module321controls interactions with the client process112, or browser107, to receive the content and context from the UE101and to present one or more functions provided by the function lookup service130.

The media feature extractor module323uses an appropriate media engine that extracts one or more features (such as statistics, histograms, clusters, amplitudes of Fourier or wavelet or principal components, or measures of texture or other properties) from the media. The feature list is further processed, extracting any patterns, and the patterns are passed to the concept identification module325.

The concept identification module325relies on a concept-features database327and performs search and pattern analysis to identify an object or other concept from the database327which most closely matches the media features list or pattern. Once the object or concept has been identified, the concept identifier for that object or other concept is passed on to the function lookup service through interface328. The concept identification module and concept-features data structure327are example means to achieve the advantage of automatically deriving a concept represented in content created in, or provided to, an application by a user.

The function lookup service interface328module controls interactions with the function lookup service130to send the context and concept identifier based on the content to the service130, and to receive one or more functions provided by the function lookup service130. The interface328is an example means to achieve the advantage of avoiding a repetition of a function selection process on every user oriented service110that supports a client application.

The service registry interface module329allows the user oriented service110to find out from the service registry128useful details of the functions provided by the function lookup service130. Useful details include API, protocol, input and output parameters, and description. In some embodiments, all such details are provided by the function lookup service130through the interface328; and, module329is omitted.

FIG. 3Cis a diagram of modules330of a function lookup service, according to one embodiment. By way of example, the function lookup service130includes one or more components for indicating a function of a backend service120based on content and context. It is contemplated that the functions of these components may be combined in one or more components or performed by other components of equivalent functionality, for example on the client process112or within a user oriented service110, if any. The function lookup modules330include an API132(as depicted inFIG. 1), a function identifier333with a function-concept-context storage data structure134(as depicted inFIG. 1), a relevance and recommendation module337, and a build database (DB) module338.

The API132is used to receive commands to perform the functions of function identification based on user provided content or context or both. The function identifier module333determines a function in the data structure134associated with the concept identified by module325based on the user content, and, in some embodiments, also associated with context of the UE101. The API132is an example means to achieve the advantage of replacing code to interact with all APIs122for all backend services120with simpler code to interact only with the single API132of the function lookup service130. The simper code consumes less storage space on the client process112or user oriented service110, and speeds development.

The relevance and recommendation module337determines how many and which associated functions to return. For example, the module337uses the context of UE101compared to the context structure for the supplied function and identifies the best set of functions to be passed back to client based on the context data received. In some embodiments, the module337also constructs context structures for each function where certain context fields may be empty or unavailable. These chosen functions along with their associated context structures are passed back to the client, e.g., directly to client112or indirectly to client112or browser107through the user oriented service110. The relevance and recommendation module337is an example means to achieve the advantage of sending a small set of most relevant functions to the client process112for presentation to a user.

In a background process, the build DB module338populates the function-concept-context data structure, as described in more detail below with reference toFIG. 6. In some embodiments, the build DB module338uses the service registry128and function database to search for all functions supported by registered services for a particular concept or context concept. In some embodiments, module338also retrieves context or concept tokens or structures defined by the backend services120that associate a particular function with appropriate contexts.

FIG. 4is a flowchart of a process400for function lookup, according to one embodiment. In one embodiment, the function lookup service130performs the process400and is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9or general purpose computer as depicted inFIG. 8. In some embodiments, a user oriented service110performs one or more steps of process400. Although methods are shown inFIG. 4, and subsequent flowchartsFIG. 5andFIG. 6, as integral steps in a particular order for purposes of illustration, in other embodiments, one or more steps or portions thereof are performed in a different order, or overlapping in time, in series or parallel, or are omitted, or one or more additional steps are added, or the process is changed in some combination of ways.

In step401, the function-concept-context data structure134is built or updated. For example, one or more databases or tables thereof are populated with data for the fields depicted inFIG. 2A. More details on step401are described below with reference toFIG. 6. Thus, a data structure is formed that associates each function of a plurality of functions provided by a plurality of network services (e.g., backend services120) with at least one identifier for a concept or at least one identifier for a device context, or both. When context data is also included in the data structure, step401is an example means for forming the data structure that associates each function of the plurality of functions provided by the plurality of network services with at least one identifier for device context (e.g., at UE101) associated with the content.

In step403, the content in use by a client process and associated context are determined. Thus, step403is an example means for determining first data that indicates a current content and an example means for determining second data that indicates a current context for the device (e.g., UE101). For example, the content is determined by client112to be an image with metadata provided by the digital camera as content generator; and the context is determined by the client112as a context token based on the metadata or output from context engine103, or both. When step403is performed by user oriented service110, content and context are determined based on the image and context sent by the client. When step403is performed by function lookup service130, content and context are determined based on the content or media features or concept identifier and context token sent by the client112or user oriented service110. Thus step403is an example means for determining the second data that indicates the current context for the device by receiving a message that indicates the second data.

In step405, a concept is determined based on the content in use at the UE101. In some embodiments, the concept is determined by the client112or user oriented service110, which includes the concept identification module325. In these embodiments, the concept is determined at the function lookup service130based on the concept identifier received in a message from the client112or user oriented service110. In some embodiments, the concept is determined by the function lookup service110that includes the concept identification module325based on content or media features received in a message from the client112or user oriented service110. In some embodiments the concept is determined based, at least in part, on the context also. For example, based on an image it is determined that the concept is a building, and based on the context that indicates an associated position or both position and orientation, that the building is a particular building having a particular address, such as a theater. Thus step405determines first data that indicates a concept represented in content provided by a device, such as UE101.

In step407, the function lookup service130determines one or more candidate functions of backend services120by searching the function-concept-context data structure134for functions that include the concept identifier in the relevant concepts field240and the context in the relevant contexts field250, e.g., with a probability above a threshold probability. Thus step407is an example means for determining the function provided by a backend network service based on the first data that indicates the concept by finding in the data structure an association between the function and an identifier for the concept. In some embodiments, if no function passes the threshold, the threshold is lowered until at least one function passes the threshold. Thus step407determines, based on the first data that indicates a concept, a function provided by a network service. When context is also considered, step407is an example means for finding in the data structure an association between the function and an identifier for device context that includes the current context for the device (e.g., UE101) associated with the content.

Thus, step407is an example means for determining the first data that indicates the concept represented in content provided by the device by receiving a message that indicates a media type feature based on the content and determining the first data that indicates the concept based on the media type feature. When only the content is sent, step407is an example means for determining the first data that indicates the concept represented in content provided by the device by receiving a message that indicates the content, then determining a media type feature based on the content, and then determining the first data that indicates the concept based on the media type feature.

When step407also uses the context to find the candidate function, then step407is an example means for determining the function provided by the network service by determining the function based, at least in part, on second data that indicates a current context for the device (e.g., UE101).

If step407is performed by the client process112or user oriented service110, step407is performed by sending the content or media feature or concept and/or context to the function lookup service130.

In step409, at least one of the candidate functions is recommended. If step409is performed by the function lookup service130, then the candidate functions are passed to the relevance and recommendation module337to determine the most relevant functions to recommend based on the concept contained in the user provided content or the context, e.g., based on a similarity measure or distance metric between concept tokens or between context tokens or both. If step409is performed by the client112or user oriented service110, step409is performed by sending the content or media feature or concept and/or context to the function lookup service130.

In step411, the recommended function is caused to be presented to the user. If step411is performed by the function lookup service130, then the recommended functions is passed to the user oriented service110or to the client process112. If step411is performed by the user oriented service110, step411is performed by sending the recommended functions received from the function lookup service130to the client process112or browser107. Thus, step411causes, at least in part, actions that result in transmitting a message that indicates the function. If step411is performed by the client process112, then step411is performed by the GUI module311based on a recommended service received directly from the function lookup service130or indirectly through the user oriented service110. Thus step411is an example means for causing, at least in part, actions that result in presenting, at the device (e.g., UE101), a description of the function.

In step413, the recommended function is caused to be invoked. If step413is performed by the function lookup service130, then the recommended functions is caused to be invoked by passing the recommended function to the user oriented service110or to the client process112. If step413is performed by the user oriented service110, step413is performed by receiving a message indicating the user has selected one of the recommended functions and then invoking the backend service with values for the input parameters, as described in more detail below with reference toFIG. 5. If step413is performed by the client process112, then step413is performed by invoking the backend service with values for the input parameters received via GUI module311. Thus, step413is an example means for causing, at least in part, actions that result in invoking the function provided by the network service.

In step415, it is determined if end conditions are satisfied. If so, the process ends. Otherwise control passes back to step401to update the function-concept-context data structure and to step403to determine the next content in use by a client process.

FIG. 5is a flowchart of a process for an application that uses function lookup, according to one embodiment. In one embodiment, the user oriented service110performs the process500and is implemented in, for instance, a general purpose computer as depicted inFIG. 8. In some embodiments, a client process112performs one or more steps of process500.

In step501, the content used by a client process and associated context (e.g., of UE101) are determined. In embodiments in which step501is performed by the user oriented service110, step501is performed by receiving a message from the client that indicates the content, or media features of the content, and the context, such as one or more context tokens. If performed by the client process112, step501includes obtaining the content from the content generator module315and the context from the context engine interface313. An interface to prompt a user of UE101for content and context is described in more detail below with reference toFIG. 7AandFIG. 7B.

In step503, media features or concepts represented in the content are determined. If performed by the client process112in embodiments with the user oriented service110, then step503includes obtaining the media type from the media type identifier317and sending the content, media type and context to the user oriented service110. If performed by the client process112in embodiments without the user oriented service110, then, in some embodiments, step503includes obtaining the media type from the media type identifier317and sending the content, media type and context to the function lookup service130; and, in other embodiments, includes sending the content to the appropriate media feature extractor module323; and, in still other embodiments, includes sending the list of media features to the concept identification module325.

If performed by the user oriented service110, then, in the illustrated embodiment, step503includes obtaining the media type from a media type identifier module317(or the message from the client process112, in some embodiments), and sending the content to the appropriate media feature extractor module323. Then the list of media features is sent to the concept identifier module325. In various other embodiments, the user oriented service110does not include the concept identification module325and does not determine the concept.

In step505, the context and list of features (or concept identifier) is sent to the function lookup service130, e.g., from the user oriented service110in some embodiments, or directly from the client process112in some embodiments. In some embodiments, user oriented service110sends the list of media features and the context to the function lookup service130, and lets the service130determine the concept from the media features. Thus step505is an example means for determining the function provided by the network service by sending a message that indicates the first data (identifying a concept) to a service (lookup service130) that associates, with each function of a plurality of functions provided by network services (e.g., backend services120), data that indicates an identifier for a concept and data that indicates an identifier for context of a device (e.g., in function-concept-context data structure134).

In step507, one or more recommended functions of backend services120are received from the function lookup service130. In some embodiments, the recommended functions are identified simply by the backend service ID from field202and, if different, the function ID from field204. In some embodiments, the data indicating the recommended function includes one or more of the API ID from field206, the protocol from field208, the parameters from field210, the description from field220and the media type from field230. In some embodiments, the information for one or more such fields are obtained during step507from the service registry128using the service registry interface module328, based on the backend service ID as a key.

In step509, data indicating the recommended function is caused to be presented to the user on UE101, e.g., based on the description of the function such as is stored in field220. In embodiments in which step509is performed by the client process112, the data indicating the recommended function is presented through GUI module311. In embodiments in which step509is performed by the user oriented service110or the function lookup service130, the data indicating the recommended function is sent to the browser107or client process112to be presented through GUI module311. Such a GUI is described in more detail below with reference toFIG. 7C.

In step511, it is determined whether the user has selected one of the recommended functions, e.g., by operating a pointing device as described in more detail below with reference toFIG. 7C. If not, then control passes back to step501to determine the next content or context or both at UE101. For purposes of illustration, it is assumed that the content is an image of a corn field, and that the user has selected the recommended function described as “Determine market prices for commodity”.

If a user selection is determined in step511, then in step513the parameters for the selected function are determined. In some embodiments, the parameters are provided by the function lookup service130during step507. In various other embodiments, the parameters are determined from the registry128based on a backend service ID as a key and, if any, a function ID during step507or during step513. For purposes of illustration, it is determined that the input parameters for the selected function include, “commodity name,” “geographic location,” and “date.”

In step515, known values for the input parameters are determined, e.g., based on the context information. For example, based on the concept identifier, the content is known to represent “corn” and from the context, the GPS position of the UE101when the image was captured is known, and the current date is known. Thus values for all three input parameters are known. If another parameter is required that is not known a default value is used or the value is marked unknown.

In step519, the user is prompted to revise values for the input parameters. In embodiments in which step519is performed by the client process112, the data indicating the input parameters and pre-filled values is presented through GUI module311. In embodiments in which step519is performed by the user oriented service110or the function lookup service130, the data indicating the input parameters and pre-filled values are sent to the browser107or client process112to be presented through GUI module311. Such a GUI is described in more detail below with reference toFIG. 7D. During step519, the user may change one or more values of the input parameters. For example, the user may provide values for parameters that were marked unknown. For purposes of illustration it is assumed that during step519, the date is changed by the user from the date of the picture to a future date when the corn is ready to harvest or a contract is to be signed to sell the corn.

In step521, the selected function is invoked. For example, in some embodiments, the user oriented service110sends, to a backend service120, a message in the appropriate protocol with parameters and values according to the appropriate API, including indicating the selected function, if any. In some embodiments, the client process112sends, to the backend service120, a message in the appropriate protocol with parameters and values according to the appropriate API, including indicating the selected function, if any. In response, during step521, results from the invoked function are received. For purposes of illustration, it is assumed that the results include data that indicates an average price and a list of buyers of corn.

In step523, the results are caused to be presented to the user on UE101. In embodiments in which step523is performed by the client process112, the data indicating the results is presented through GUI module311. In embodiments in which step523is performed by the user oriented service110or the function lookup service130, the data indicating the results is sent to the browser107or client process112to be presented through GUI module311. Such a GUI is described in more detail below with reference toFIG. 7E.

In step525, it is determined if end conditions are satisfied. If so, the process ends. Otherwise control passes back to step501to determine the next content in use by a client process and the associated context.

FIG. 6is a flowchart of a process600for building a function-concept-context data structure, according to one embodiment. In one embodiment, the function lookup service130performs the process600and is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9or general purpose computer as depicted inFIG. 8.

In step601, a backend service is determined to add to the function-concept-context storage data structure. For example, in some embodiments, a registry of one or more backend services is queried to obtain a list of backend services. In some embodiments, a web page is made available where administrators of backend services can upload or manually input data indicating those backend services. In some embodiments, individual functions, APIs, protocols, parameters, description or media types, or some combination, are also determined during step601.

In step603, a service not yet added to the function-concept-context storage data structure is selected as the current service. For example, the next service in a list of backend services retrieved from a service registry128is selected as the current service.

In step605, a function not yet added to the function-concept-context storage data structure is selected as the current function. For example, in some embodiments, one or more parameters of an API are associated with one function of multiple functions available at the backend service. For example, a service for commodity markets includes one seller function for finding a buyer and buy price for a commodity and a separate buyer function for finding a seller and sell price for a commodity. One of those functions is taken as the current function.

In step607, one or more concepts of the concept database327or vocabulary are associated with the current function. For example, a semantic analysis of the description of the function determines that the function is related to commodities. The semantic analysis further determines that commodities include certain semantic vocabulary words, such as petroleum, byproducts of petroleum, crude oil, heating oil, propane, natural gas, coal, wheat, oat, corn, rice and soybean, coffee, cocoa, sugar, cotton and orange juice, cattle, pork bellies and lean hogs. Of these, it is determined in step607which of these words are concepts in the concepts that are included in the concept database or similar to those words, such as gas tanks, oranges, orchards, and pigs. These concepts and topics that include these concepts are determined in step607. While the list may be long, as for commodities, it excludes many concepts, such as people, buildings and vehicles excluded from commodities.

In step609, one or more contexts of a context vocabulary and topics database are associated with the current function. For example, a context semantic analysis of the description of the function and parameters determines that the function is related to place and time and the activities of buying and selling.

In step611, entries200for the function-concept-context storage are generated and stored. For example, a new entry200is added to the function-concept-context data structure134. The new entry200includes an identifier for the current backend service in field202, an identifier for the current function in field204, and other information for the function, as appropriate in fields206through230. The new entry200also includes the list of identifiers for commodity concepts in relevant concepts field240, and context vocabulary tokens and words for place, time, buying, selling in the relevant contexts field250.

In step613, it is determined whether there is another function for the current service. If so, then control passes back to step605, described above, to determine the next function of the service to make current. If not, then, in step615, it is determined whether there is another backend service from the list. If so, then control passes back to step603, described above, to determine the next backend service to make current.

If there are not further services or functions to add, then, in step617, one or more search indices are built. For example, for each word in the concept database, an entry is made in the indices data structure280. For example, the service identifier and function identifier for the sell commodities function is added in field264for each concept ID field262that lists one of the commodities. Similarly, for each word or topic in the context vocabulary, an entry is made in the indices data structure280. For example, the service identifier and function identifier for the sell commodities function is added in field274for each context field272that lists one of the contexts time, place, buying or selling. In some embodiments, an index is not formed and step617is omitted.

In step619, it is determined if end conditions are satisfied. If so, the process ends. Otherwise control passes back to step601to determine the next service that has not yet been added to the function-concept-context storage data structure134.

FIGS. 7A-7Eare diagrams of user interfaces utilized in the processes ofFIG. 5, according to various embodiments. A graphical user interface (GUI) includes one or more graphical components that each comprise a set of picture elements (pixels) that cover an area of a display screen, such as display device814or1007described below. A graphical component may include a mechanism to detect user input associated with the area, e.g., in response to a pointing device, such as a touch on a touch screen or a click of a button on a mouse or keypad (e.g., input device812or keyboard1047) when a cursor is displayed in the area.

FIG. 7Ais a diagram of an example GUI701on UE101for determining content in use. The current content presentation area710presents a representation of the current content on the UE101, such as an image or video in a camera viewfinder, or web browser, or a graph of acoustic pressure or frequency during streaming audio. The capture content label area712presents data that prompts the user to select the content currently represented in the area710for further use. A button714is a graphical component input mechanism that when selected by a user causes the current content to be selected for further use. For example, the current content presentation area710presents a view of a corn field in a digital camera application, or view of a bill in a banking application, or a picture of the skyline of Shanghai downloaded in a picture application. When the OK button714is activated, e.g., by touching the button on a touch screen or pressing a keyboard key associated with the label, or clicking a mouse button or button on some other pointing device, the content represented in area710is captured for further use, e.g., in one or more files on UE101.

FIG. 7Bis a diagram of an example GUI702on UE101for labeling content in use. The name content input area720includes a text box for the user to input text and a prompt indicating the text should indicate a name for the captured content. In response to the prompt, a user types in a name for the content, e.g., picture A, or picture B, or picture C and activates the OK button724a. The describe content input area720includes a text box for the user to input text and a prompt indicating the text should indicate a description for the captured content. In response to the prompt, a user types in a description for the content, e.g., survey owned land, or Shanghai skyline, or electricity bill and activates the OK button724b.

FIG. 7Cis a diagram of an example GUI703on UE101for selecting a function appropriate for the selected content in use. The function selection options area730includes a prompt area731that presents a prompt indicating the user should select a function to operate on the content in use. The recommended functions are presented as descriptions listed in function description areas334athrough334e(collectively referenced hereinafter as function description areas334). In some embodiments, the function description in fields334includes an identifier for the concept found in the content or context associated with the content that led to a match with the function.

More functions may be represented than can fit in the function selection options area730using a scroll bar736graphical component, well known in the art, to slide the descriptions of recommended functions up or down in the area730. Associated with each function description area334is a radio button738. As a user selects a function to operate on the content, a solid circle is placed inside the radio button. In the illustrated GUI, the functions described by function description area334band334dare indicated as selected by the user. The selection is completed by activating the select button732.

For purposes of illustration it is assumed that, based on the image of the corn field in picture A described as “survey owned land,” and the example function descriptions described above for field220, the process500identified the concept “corn” and determined the recommended functions that are presented as the following descriptions, including the identifier for corn, in function description areas334:Provides maps for a given location=position of picture A;Determines market buying and selling prices for commodity=corn;Determines retail outlet for a product=corn;Provides recipes that include given ingredients=corn.

For purposes of further illustration, it is assumed that, based on the image in picture B described as “Shanghai skyline,” and the example function descriptions described above for field220, the process500identified the concept “building” and context place=Shanghai and determined the recommended functions that are presented as the following descriptions, including the identifier for context location, in function description areas334:Provide maps for a given location=Shanghai;Reserve tickets for shows at a participating theater=in Shanghai;Book plane ticket to destination city=Shanghai;Reserve table at a participating restaurant=in Shanghai;

For purposes of further illustration it is assumed that, based on the image in picture C described as “electricity bill,” and the example function descriptions described above for field220, the process500identified the concept “letter” and concept “electricity” and the context “bill payment” and determined the recommended functions that are presented as the following descriptions, including the identifier for electricity, in function description areas334:Determine market buying and selling prices for commodity=electricity;Determine retail outlet for a product=electricity;Issue payment from a bank account.

FIG. 7Eis a diagram of an example GUI705on UE101for presenting the results of selected functions. The selected function result presentation areas750a,750b, among others indicated by ellipsis (collectively referenced hereinafter as result presentation areas750) presents data indicating the results of the selected functions, such as the buying price for corn, or recipe using corn as an ingredient.

The processes described herein for identifying network functions based on content may be advantageously implemented via software, hardware, firmware or a combination of software and/or firmware and/or hardware. For example, the processes described herein, including for providing user interface navigation information associated with the availability of services, may be advantageously implemented via processor(s), Digital Signal Processing (DSP) chip, an Application Specific Integrated Circuit (ASIC), Field Programmable Gate Arrays (FPGAs), etc. Such exemplary hardware for performing the described functions is detailed below.

A bus810includes one or more parallel conductors of information so that information is transferred quickly among devices coupled to the bus810. One or more processors802for processing information are coupled with the bus810.

Computer system800also includes a memory804coupled to bus810. The memory804, such as a random access memory (RAM) or other dynamic storage device, stores information including processor instructions for identifying network functions based on content. Dynamic memory allows information stored therein to be changed by the computer system800. RAM allows a unit of information stored at a location called a memory address to be stored and retrieved independently of information at neighboring addresses. The memory804is also used by the processor802to store temporary values during execution of processor instructions. The computer system800also includes a read only memory (ROM)806or other static storage device coupled to the bus810for storing static information, including instructions, that is not changed by the computer system800. Some memory is composed of volatile storage that loses the information stored thereon when power is lost. Also coupled to bus810is a non-volatile (persistent) storage device808, such as a magnetic disk, optical disk or flash card, for storing information, including instructions, that persists even when the computer system800is turned off or otherwise loses power.

Information, including instructions for identifying network functions based on content, is provided to the bus810for use by the processor from an external input device812, such as a keyboard containing alphanumeric keys operated by a human user, or a sensor. A sensor detects conditions in its vicinity and transforms those detections into physical expression compatible with the measurable phenomenon used to represent information in computer system800. Other external devices coupled to bus810, used primarily for interacting with humans, include a display device814, such as a cathode ray tube (CRT) or a liquid crystal display (LCD), or plasma screen or printer for presenting text or images, and a pointing device816, such as a mouse or a trackball or cursor direction keys, or motion sensor, for controlling a position of a small cursor image presented on the display814and issuing commands associated with graphical elements presented on the display814. In some embodiments, for example, in embodiments in which the computer system800performs all functions automatically without human input, one or more of external input device812, display device814and pointing device816is omitted.

Network link878typically provides information communication using transmission media through one or more networks to other devices that use or process the information. For example, network link878may provide a connection through local network880to a host computer882or to equipment884operated by an Internet Service Provider (ISP). ISP equipment884in turn provides data communication services through the public, world-wide packet-switching communication network of networks now commonly referred to as the Internet890.

A computer called a server host892connected to the Internet hosts a process that provides a service in response to information received over the Internet. For example, server host892hosts a process that provides information representing video data for presentation at display814. It is contemplated that the components of system800can be deployed in various configurations within other computer systems, e.g., host882and server892.

At least some embodiments of the invention are related to the use of computer system800for implementing some or all of the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system800in response to processor802executing one or more sequences of one or more processor instructions contained in memory804. Such instructions, also called computer instructions, software and program code, may be read into memory804from another computer-readable medium such as storage device808or network link878. Execution of the sequences of instructions contained in memory804causes processor802to perform one or more of the method steps described herein. In alternative embodiments, hardware, such as ASIC820, may be used in place of or in combination with software to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware and software, unless otherwise explicitly stated herein.

The signals transmitted over network link878and other networks through communications interface870, carry information to and from computer system800. Computer system800can send and receive information, including program code, through the networks880,890among others, through network link878and communications interface870. In an example using the Internet890, a server host892transmits program code for a particular application, requested by a message sent from computer800, through Internet890, ISP equipment884, local network880and communications interface870. The received code may be executed by processor802as it is received, or may be stored in memory804or in storage device808or other non-volatile storage for later execution, or both. In this manner, computer system800may obtain application program code in the form of signals on a carrier wave.

Various forms of computer readable media may be involved in carrying one or more sequence of instructions or data or both to processor802for execution. For example, instructions and data may initially be carried on a magnetic disk of a remote computer such as host882. The remote computer loads the instructions and data into its dynamic memory and sends the instructions and data over a telephone line using a modem. A modem local to the computer system800receives the instructions and data on a telephone line and uses an infra-red transmitter to convert the instructions and data to a signal on an infra-red carrier wave serving as the network link878. An infrared detector serving as communications interface870receives the instructions and data carried in the infrared signal and places information representing the instructions and data onto bus810. Bus810carries the information to memory804from which processor802retrieves and executes the instructions using some of the data sent with the instructions. The instructions and data received in memory804may optionally be stored on storage device808, either before or after execution by the processor802.

In one embodiment, the chip set or chip900includes merely one or more processors and some software and/or firmware supporting and/or relating to and/or for the one or more processors.

The processor903and accompanying components have connectivity to the memory905via the bus901. The memory905includes both dynamic memory (e.g., RAM, magnetic disk, writable optical disk, etc.) and static memory (e.g., ROM, CD-ROM, etc.) for storing executable instructions that when executed perform the inventive steps described herein for identifying network functions based on content, The memory905also stores the data associated with or generated by the execution of the inventive steps.

Pertinent internal components of the telephone include a Main Control Unit (MCU)1003, a Digital Signal Processor (DSP)1005, and a receiver/transmitter unit including a microphone gain control unit and a speaker gain control unit. A main display unit1007provides a display to the user in support of various applications and mobile terminal functions that perform or support the steps of identifying network functions based on content. The display1007includes display circuitry configured to display at least a portion of a user interface of the mobile terminal (e.g., mobile telephone). Additionally, the display1007and display circuitry are configured to facilitate user control of at least some functions of the mobile terminal. An audio function circuitry1009includes a microphone1011and microphone amplifier that amplifies the speech signal output from the microphone1011. The amplified speech signal output from the microphone1011is fed to a coder/decoder (CODEC)1013.

A radio section1015amplifies power and converts frequency in order to communicate with a base station, which is included in a mobile communication system, via antenna1017. The power amplifier (PA)1019and the transmitter/modulation circuitry are operationally responsive to the MCU1003, with an output from the PA1019coupled to the duplexer1021or circulator or antenna switch, as known in the art. The PA1019also couples to a battery interface and power control unit1020.

The encoded signals are then routed to an equalizer1025for compensation of any frequency-dependent impairments that occur during transmission though the air such as phase and amplitude distortion. After equalizing the bit stream, the modulator1027combines the signal with a RF signal generated in the RF interface1029. The modulator1027generates a sine wave by way of frequency or phase modulation. In order to prepare the signal for transmission, an up-converter1031combines the sine wave output from the modulator1027with another sine wave generated by a synthesizer1033to achieve the desired frequency of transmission. The signal is then sent through a PA1019to increase the signal to an appropriate power level. In practical systems, the PA1019acts as a variable gain amplifier whose gain is controlled by the DSP1005from information received from a network base station. The signal is then filtered within the duplexer1021and optionally sent to an antenna coupler1035to match impedances to provide maximum power transfer. Finally, the signal is transmitted via antenna1017to a local base station. An automatic gain control (AGC) can be supplied to control the gain of the final stages of the receiver. The signals may be forwarded from there to a remote telephone which may be another cellular telephone, other mobile phone or a land-line connected to a Public Switched Telephone Network (PSTN), or other telephony networks.

Voice signals transmitted to the mobile terminal1001are received via antenna1017and immediately amplified by a low noise amplifier (LNA)1037. A down-converter1039lowers the carrier frequency while the demodulator1041strips away the RF leaving only a digital bit stream. The signal then goes through the equalizer1025and is processed by the DSP1005. A Digital to Analog Converter (DAC)1043converts the signal and the resulting output is transmitted to the user through the speaker1045, all under control of a Main Control Unit (MCU)1003—which can be implemented as a Central Processing Unit (CPU) (not shown).

The MCU1003receives various signals including input signals from the keyboard1047. The keyboard1047and/or the MCU1003in combination with other user input components (e.g., the microphone1011) comprise a user interface circuitry for managing user input. The MCU1003runs a user interface software to facilitate user control of at least some functions of the mobile terminal1001for identifying network functions based on content. The MCU1003also delivers a display command and a switch command to the display1007and to the speech output switching controller, respectively. Further, the MCU1003exchanges information with the DSP1005and can access an optionally incorporated SIM card1049and a memory1051. In addition, the MCU1003executes various control functions required of the terminal. The DSP1005may, depending upon the implementation, perform any of a variety of conventional digital processing functions on the voice signals. Additionally, DSP1005determines the background noise level of the local environment from the signals detected by microphone1011and sets the gain of microphone1011to a level selected to compensate for the natural tendency of the user of the mobile terminal1001.

An optionally incorporated SIM card1049carries, for instance, important information, such as the cellular phone number, the carrier supplying service, subscription details, and security information. The SIM card1049serves primarily to identify the mobile terminal1001on a radio network. The card1049also contains a memory for storing a personal telephone number registry, text messages, and user specific mobile terminal settings.