U.S. patent application number 14/743589 was filed with the patent office on 2016-06-30 for personalizing advertisements using subscription data.
This patent application is currently assigned to Quixey, Inc.. The applicant listed for this patent is Quixey, Inc.. Invention is credited to Xueying Dai, Eric J. Glover.
Application Number | 20160189214 14/743589 |
Document ID | / |
Family ID | 56164716 |
Filed Date | 2016-06-30 |
United States Patent
Application |
20160189214 |
Kind Code |
A1 |
Dai; Xueying ; et
al. |
June 30, 2016 |
Personalizing Advertisements Using Subscription Data
Abstract
A method for personalizing advertisements using subscription
data includes receiving usage data of a user and advertisement
parameters for one or more advertisements at data processing
hardware. The usage data includes device usage data associated with
a user device of the corresponding user and subscription usage data
associated with one or more applications installed on the user
device. The method further includes determining, using the data
processing hardware, whether any of the advertisement parameters
are satisfied by the usage data of the user. When an advertisement
parameter is satisfied by the usage data of the user, the method
includes outputting, from the data processing hardware to the user
device of the user, the advertisement corresponding to the
satisfied advertisement parameter.
Inventors: |
Dai; Xueying; (Santa Clara,
CA) ; Glover; Eric J.; (Palo Alto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Quixey, Inc. |
Mountain View |
CA |
US |
|
|
Assignee: |
Quixey, Inc.
Mountain View
CA
|
Family ID: |
56164716 |
Appl. No.: |
14/743589 |
Filed: |
June 18, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62099088 |
Dec 31, 2014 |
|
|
|
Current U.S.
Class: |
705/14.53 |
Current CPC
Class: |
H04L 67/22 20130101;
G06Q 30/0255 20130101; G06Q 30/0267 20130101; H04L 67/306
20130101 |
International
Class: |
G06Q 30/02 20060101
G06Q030/02 |
Claims
1. A method comprising: receiving, at data processing hardware,
usage data of a user, the usage data comprising device usage data
associated with a user device of the corresponding user and
subscription usage data associated with one or more applications
installed on the user device; receiving, at the data processing
hardware, advertisement parameters for one or more advertisements;
determining, by the data processing hardware, whether any of the
advertisement parameters are satisfied by the usage data of the
user; and when an advertisement parameter is satisfied by the usage
data of the user, outputting, from the data processing hardware to
the user device of the user, the advertisement corresponding to the
satisfied advertisement parameter.
2. The method of claim 1, further comprising receiving, at the data
processing hardware an advertisement request from the user device
for an advertisement, the advertisement request sent from the user
device based on a trigger from a software application executing on
the user device.
3. The method of claim 1, wherein the device usage data comprise at
least one of a device location, a device operating system, or a
list of the one or more applications installed on the corresponding
user device.
4. The method of claim 1, wherein the subscription usage data
comprise one or more subscription tags to content access
mechanisms, each subscription tag associated with one of the one or
more applications installed on the user device, each subscription
tag associated with one or more entities and/or categories.
5. The method of claim 4, wherein the advertising parameters of an
advertisement are associated with one or more entities and/or
categories.
6. The method of claim 5, wherein an entity comprises a person, a
location, a business, a product, a service, a media content, or a
destination.
7. The method of claim 5, wherein a category comprises at least one
of a book category, a business category, an education category, an
entertainment category, a food and dining category, a games
category, a health and fitness category, a lifestyle category, a
music and videos category, a news category, a weather category, a
photo category, a productivity category, a social media category,
or a sports category.
8. The method of claim 1, wherein each advertisement comprises
advertisement data and an advertisement access mechanism having a
reference to a corresponding application installed on the user
device, the advertisement access mechanism indicating a performable
operation for the corresponding application relating to the
advertisement.
9. A method comprising: sending, from a user device to an
advertisement system, usage data of a user, the usage data
comprising device usage data associated with the user device and
subscription usage data associated with one or more applications
installed on the user device, the subscription usage data defining
one or more subscription content feeds, each subscription content
feed associated with an application installed on the user device;
sending an advertisement request from the user device to the
advertisement system; receiving, at the user device, one or more
advertisements transmitted from the advertisement system, each
advertisement comprising advertisement data and an advertisement
access mechanism having a reference to a corresponding application
installed on the user device, the advertisement access mechanism
indicating a performable operation for the corresponding
application relating to the advertisement, the advertisement having
one or more advertisement parameters that are satisfied by the
usage data of the user, and displaying, on a display in
communication with the user device, a graphical user interface
including the one or more advertisements, each advertisement
comprising a user selectable link associated with the corresponding
advertisement access mechanism.
10. The method of claim 9, wherein the advertisement request sent
from the user device is based on a trigger from a software
application executing on the user device.
11. The method of claim 9, wherein the device usage data comprise
at least one of a device location, a device operating system, or a
list of the one or more applications installed on the corresponding
user device.
12. The method of claim 9, wherein the subscription usage data
comprise one or more subscription tags to content access
mechanisms, each subscription tag associated with one of the one or
more applications installed on the user device, and each
subscription tag associated with one or more entities and/or
categories.
13. The method of claim 12, wherein the advertising parameters of
an advertisement are associated with one or more entities and/or
categories.
14. The method of claim 13, wherein an entity comprises a person, a
location, a business, a product, a service, a media content, or a
destination.
15. The method of claim 13, wherein a category comprises at least
one of a book category, a business category, an education category,
an entertainment category, a food and dining category, a games
category, a health and fitness category, a lifestyle category, a
music and videos category, a news category, a weather category, a
photo category, a productivity category, a social media category,
or a sports category.
16. A user device comprising: a display; data processing hardware
in communication with the display; and memory hardware in
communication with the data processing hardware, the memory
hardware storing instructions that when executed on the data
processing hardware cause the data processing hardware to perform
operation comprising: sending to an advertisement system, usage
data of a user, the usage data comprising device usage data
associated with the user device and subscription usage data
associated with one or more applications installed on the user
device, the subscription usage data defining one or more
subscription content feeds, each subscription content feed
associated with an application installed on the user device;
sending an advertisement request to the advertisement system;
receiving one or more advertisements transmitted from the
advertisement system, each advertisement comprising advertisement
data and an advertisement access mechanism having a reference to a
corresponding application installed on the user device, the
advertisement access mechanism indicating a performable operation
for the corresponding application relating to the advertisement,
the advertisement having one or more advertisement parameters that
are satisfied by the usage data of the user; and displaying, on the
display in communication with the user device, a graphical user
interface including the one or more advertisements, each
advertisement comprising a user selectable link associated with the
corresponding advertisement access mechanism.
17. The user device of claim 16, wherein the advertisement request
sent from the user device is based on a trigger from a software
application executing on the user device.
18. The user device of claim 16, wherein the device usage data
comprise at least one of a device location, a device operating
system, or a list of the one or more applications installed on the
corresponding user device.
19. The user device of claim 16, wherein the subscription usage
data comprise one or more subscription tags to content access
mechanisms, each subscription tag associated with one of the one or
more applications installed on the user device, and each
subscription tag associated with one or more entities and/or
categories.
20. The user device of claim 19, wherein the advertising parameters
of an advertisement are associated with one or more entities and/or
categories.
21. The user device of claim 20, wherein an entity comprises a
person, a location, a business, a product, a service, a media
content, or a destination.
22. The user device of claim 20, wherein a category comprises at
least one of a book category, a business category, an education
category, an entertainment category, a food and dining category, a
games category, a health and fitness category, a lifestyle
category, a music and videos category, a news category, a weather
category, a photo category, a productivity category, a social media
category, or a sports category.
23. A method comprising: receiving, at data processing hardware,
one or more user permissions to access one or more applications
installed on a user device; generating, at the data processing
hardware, a user profile associated with the user device, the user
profile comprising: user profile data comprising a device location,
device data defining at least one of a device operating system, and
a list of applications installed on the user device; and
subscription tags defining one or more user subscriptions to
application access mechanisms; receiving, at the data processing
hardware from the user device, usage data of one or more
applications installed on the user device; receiving, at the data
processing hardware from the user device, an advertising request
comprising an application state; and identifying, at the data
processing hardware, one or more advertisements based on the
subscription tags.
24. The method of claim 23, further comprising transmitting to the
user device an identified advertisement in response to a user
selection of a subscription tag.
25. The method of claim 23, wherein each advertisement defines
advertisement parameters comprising one or more of access
mechanisms, advertisement subscription, and/or keyword
parameters.
26. The method of claim 25, further comprising transmitting to the
user device an identified advertisement when a user subscription
tags and the advertisement subscriptions have a threshold
similarity value.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This U.S. patent application claims priority under 35 U.S.C.
.sctn.119(e) to U.S. Provisional Application 62/099,088, filed on
Dec. 31, 2014, which is hereby incorporated by reference in its
entirety.
TECHNICAL FIELD
[0002] This disclosure relates to using subscription data
associated with one or more applications installed on a user device
to provide user with targeted advertisements.
BACKGROUND
[0003] In recent years, use of computers, smartphones, and other
Internet-connected devices has grown exponentially.
Correspondingly, the number of available software applications for
such devices has also grown. Today, many diverse native and web
software applications can be accessed on any number of different
devices, including, but not limited to, smartphones, personal
computers, automobiles, and televisions. These diverse applications
can range from business driven applications, games, educational
applications, news applications, shopping applications, messaging
applications, media streaming applications, social networking
applications, and so much more. Furthermore, application developers
develop vast amounts of applications within each genre and each
application may have numerous editions. Therefore, many
applications provide broad content. For example, applications, such
as YouTube, Facebook, Twitter, sports applications, and news
applications offer content that span several different topics.
Users of these applications may subscribe to specific content
feeds.
SUMMARY
[0004] One aspect of the disclosure provides a method for
personalizing advertisements using subscription data. The method
includes receiving, at data processing hardware, usage data of a
user and receiving advertisement parameters for one or more
advertisements. The usage data includes device usage data
associated with a user device of the corresponding user and
subscription usage data associated with one or more applications
installed on the user device. The method further includes
determining, using the data processing hardware, whether any of the
advertisement parameters are satisfied by the usage data of the
user. When an advertisement parameter is satisfied by the usage
data of the user, the method includes outputting, from the data
processing hardware to the user device of the user, the
advertisement corresponding to the satisfied advertisement
parameter.
[0005] Implementations of the disclosure may include one or more of
the following optional features. In some implementations, the
method includes receiving, at the data processing hardware an
advertisement request from the user device for an advertisement.
The advertisement request is sent from the user device based on a
trigger from a software application executing on the user device.
The device usage data may include at least one of a device
location, a device operating system, or a list of the one or more
applications installed on the corresponding user device. The
subscription data may include one or more subscription tags to
content access mechanisms. Each subscription tag is associated with
one of the one or more applications installed on the user device.
Each subscription tag associated with one or more entities and/or
categories.
[0006] In some examples, the advertising parameters of an
advertisement are associated with one or more entities and/or
categories. An entity may include a person, a location, a business,
a product, a service, a media content, or a destination. A category
may include at least one of a book category, a business category,
an education category, an entertainment category, a food and dining
category, a games category, a health and fitness category, a
lifestyle category, a music and videos category, a news category, a
weather category, a photo category, a productivity category, a
social media category, or a sports category. Each advertisement may
include advertisement data and an advertisement access mechanism
having a reference to a corresponding application installed on the
user device. The advertisement access mechanism indicates a
performable operation for the corresponding application relating to
the advertisement.
[0007] Another aspect of the disclosure provides a second method
for personalizing advertisements using subscription data. This
method includes sending, from a user device to an advertisement
system, usage data of a user. The usage data includes device usage
data associated with the user device and subscription usage data
associated with one or more applications installed on the user
device. The subscription usage data defines one or more
subscription content feeds. Each subscription content feed is
associated with an application installed on the user device. The
method further includes sending an advertisement request from the
user device to the advertisement system and receiving one or more
advertisements transmitted from the advertisement system. Each
advertisement includes advertisement data and an advertisement
access mechanism that has a reference to a corresponding
application installed on the user device. The advertisement access
mechanism indicates a performable operation for the corresponding
application relating to the advertisement. The advertisement has
one or more advertisement parameters that are satisfied by the
usage data of the user. The method further includes displaying, on
a display in communication with the user device, a graphical user
interface including the one or more advertisements. Each
advertisement includes a user selectable link associated with the
corresponding advertisement access mechanism.
[0008] In some examples, the advertisement request sent from the
user device is based on a trigger from a software application
executing on the user device. The device usage data includes at
least one of a device location, a device operating system, or a
list of the one or more applications installed on the corresponding
user device. The subscription usage data includes one or more
subscription tags to content access mechanisms. Each subscription
tag is associated with one of the one or more applications
installed on the user device. Each subscription tag is associated
with one or more entities and/or categories. The advertising
parameters of an advertisement are associated with one or more
entities and/or categories. An entity may include a person, a
location, a business, a product, a service, a media content, or a
destination. A category may include at least one of a book
category, a business category, an education category, an
entertainment category, a food and dining category, a games
category, a health and fitness category, a lifestyle category, a
music and videos category, a news category, a weather category, a
photo category, a productivity category, a social media category,
or a sports category.
[0009] Yet another aspect of the disclosure provides a device for
personalizing advertisements using subscription data. The user
device includes a display, a data processing hardware in
communication with the display and memory hardware in communication
with the data processing hardware. The memory hardware stores
instructions that when executed on the data processing hardware
causes the data processing hardware to perform operations. The
operations include sending to an advertisement data, usage data of
a user, the usage data including device usage data associated with
the user device and subscription usage data associated with one or
more applications installed on the user device. The subscription
usage data defines one or more subscription content feeds, each
subscription content feed is associated with an application
installed on the user device. The operations further include
sending an advertisement request to the advertisement system and
receiving one or more advertisements transmitted from the
advertisement system. Each advertisement includes advertisement
data and an advertisement access mechanism having a reference to a
corresponding application installed on the user device. The
advertisement access mechanism indicates a performable operation
for the corresponding application relating to the advertisement,
the advertisement having one or more advertisement parameters that
are satisfied by the usage data of the user. The operations further
include displaying, on the display in communication with the user
device, a graphical user interface including the one or more
advertisements, each advertisement including a user selectable link
associated with the corresponding advertisement access
mechanism.
[0010] In some implementations, the advertisement request sent from
the user device is based on a trigger from a software application
executing on the user device. The device usage data includes at
least one of a device location, a device operating system, or a
list of the one or more applications installed on the corresponding
user device. The subscription usage data may include one or more
subscription tags to content access mechanisms, each subscription
tag associated with one of the one or more applications installed
on the user device, each subscription tag associated with one or
more entities and/or categories. The advertisement parameters of an
advertisement are associated with one or more entities and/or
categories. An entity may include a person, a location, a business,
a product, a service, a media content, or a destination. A category
may include at least one of a book category, a business category,
an education category, an entertainment category, a food and dining
category, a games category, a health and fitness category, a
lifestyle category, a music and videos category, a news category, a
weather category, a photo category, a productivity category, a
social media category, or a sports category.
[0011] Yet another method provides a third application for
personalizing deep search results using subscription data. The
method includes receiving, at data processing hardware, one or more
user permissions to access one or more applications installed on a
user device and generating, at the data processing hardware, a user
profile associated with the user device. The user profile includes
user profile data including a device location, device data defining
at least one of a device operating system, and a list of
applications installed on the user device. The user profile further
includes subscription tags defining one or more user subscriptions
to application access mechanisms. The method further includes
receiving, at the data processing hardware from the user device,
usage data of one or more applications installed on the user
device, receiving, at the data processing hardware from the user
device, an advertising request including an application state and
identifying, at the data processing hardware, one or more
advertisements based on the subscription tags.
[0012] Implementations of the disclosure may include one or more of
the following optional features. In some implementations, the
method includes transmitting to the user device an identified
advertisement in response to a user selection of a subscription
tag. Each advertisement may define advertisement parameters
including one or more of access mechanisms, advertisement
subscription, and/or keyword parameters. The method may further
include transmitting to the user device an identified advertisement
when a user subscription tags and the advertisement subscriptions
have a threshold similarity value.
[0013] The details of one or more implementations of the disclosure
are set forth in the accompanying drawings and the description
below. Other aspects, features, and advantages will be apparent
from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS
[0014] FIG. 1 is a schematic view of an example environment
including a user device in communication with a profile system, an
advertisement system, and content providers.
[0015] FIG. 2 is a functional block diagram of an example
environment including a profile system interacting with an
advertisement system, user devices, and data sources.
[0016] FIGS. 3A and 3B are schematic views of example user devices
in communication with a profile system, and an advertisement
system.
[0017] FIG. 4 is a functional block diagram of a profile
system.
[0018] FIGS. 5A and 5B are schematic views of example profile
records.
[0019] FIGS. 5C and 5D are schematic views of example application
state records.
[0020] FIGS. 5E and 5F are schematic views of example feed
records.
[0021] FIGS. 5G and 5H are schematic views of example entity
records.
[0022] FIG. 6 is a functional block diagram of an example
advertisement system.
[0023] FIGS. 7A and 7B are schematic views of example advertisement
records.
[0024] FIG. 8 is a schematic view illustrating an example method
for generating a user profile.
[0025] FIG. 9 is a schematic view illustrating an example method
for receiving an advertisement request and generating
advertisements FIG. 9 is a functional block diagram of a user
device.
[0026] FIG. 10 is a functional block diagram of an example user
device.
[0027] FIGS. 11A and 11B are schematic views of example user
devices displaying advertisements.
[0028] FIG. 12 is a schematic view of an example method for
personalizing advertisements using subscription data.
[0029] FIG. 13 is a schematic view of an example method for
personalizing advertisements using subscription data.
[0030] FIG. 14 is a schematic view of an example method for
receiving and displaying personalized advertisement results.
[0031] FIG. 15 is a schematic view of an example computing device
executing any systems or methods described herein.
[0032] Like reference symbols in the various drawings indicate like
elements.
DETAILED DESCRIPTION
[0033] A system of the present disclosure personalizes
advertisements for a user using subscription data. The subscription
data may refer to any information related to one or more content
feeds, such as Rich Site Summary (RSS) feeds, subscribed to by
users. In some implementations, the system receives usage data of
users. For each user, the usage data may include device usage data
related to a user device of the user and/or subscription usage data
associated with one or more applications installed on the user
device. The system may also receive advertisement data of one or
more advertisements. The system determines one or more
advertisements to send to the user device based on the usage
data.
[0034] In response to a trigger or an advertisement request
received from the user device, the system may select one or more
advertisement results from an advertisement data store. Each
advertisement result is associated with an advertisement that is
provided by an advertiser and advertises a product, a service, or
goods of the advertiser. Once the system selects the one or more
advertisement results associated with the advertisements, the
system transmits the advertisement results to the user device. In
some implementations, the system determines which advertisement
result to send to the user by determining if the usage data of the
user satisfies one or more parameters or attributes of the
advertisement. Each advertisement result may include an
advertisement access mechanism that has a reference to an
application installed on the user device and indicates a
performable operation for the application. In response to selection
of an advertisement access mechanism, the user device may launch
the application referenced by the advertisement access mechanism
and perform the one or more operations indicated in the
advertisement access mechanism.
[0035] The user may opt to share usage data of applications
installed on his/her user device, for example, to enhance the
overall experience of using one or more applications installed on
the user device. The system, with consent from the user, may
generate a user profile associated with the user of the
application(s). The user profile may include subscription data
(e.g., subscription tags) that the system may use to provide
customized advertisements.
[0036] FIG. 1 illustrates an example system 100 that includes a
user device 200 associated with a user 10 in communication with a
remote system 110 via a network 120. The remote system 110 may be a
distributed system (e.g., cloud environment) having
scalable/elastic computing resources 112 and/or storage resources
114. The user device 200 and/or the remote system 110 may execute
an advertisement system 400 and optionally receive data from one or
more data sources 130. The user device 200 and/or the remote system
110 may additionally execute a profile system 300. In some
examples, the profile system 300 is part of the advertisement
system 400. In other examples, the profile system 300 and the
advertisement system 400 communicate with each other and with one
or more user devices 200 and the data source(s) 130 via the network
120, as shown in the figures. The network 120 may include various
types of networks, such as a local area network (LAN), wide area
network (WAN), and/or the Internet. The user device 200 may execute
an advertisement application 216 configured to send an
advertisement request 212 to the advertisement system 400. The
advertisement request 212 may be triggered by one or more actions
or behaviors of the user device 200. The advertisement application
216 may generally be part of another application 204 that provides
a different and distinct functionality. Once the advertisement
system 400 executes an advertisement search and/or analysis (e.g.,
determines which advertisement(s) to provide to the user device
200), the user device 200 displays advertisement results 330
received from the advertisement system 400 on a graphical user
interface (GUI) 240 shown on a screen 201 of the user device 200 by
way of displayed results 230 having links 234, 236. The executed
advertisement search/analysis may be based on a user profile record
370 (FIGS. 5A and 5B) generated by the profile system 300 and an
advertisement record 530 (FIGS. 7A and 7B). In some examples, the
profile system 300 that generates the user profile record 370 is a
standalone system (as shown in FIG. 4) and in communication with
the advertisement system 400 via the network 120, while in other
examples, the profile system 300 is part of the advertisement
system 400.
[0037] FIG. 2 provides a functional block diagram of the system
100. In the example shown, a user device 200 is in communication
with the profile system 300 and the advertisement system 400. User
devices 200 can be any computing devices that are capable of
providing advertisement requests 212 to the advertisement system
400. User devices 200 include, but are not limited to, mobile
computing devices, such as laptops 200a, tablets 200b, smart phones
200c, and wearable computing devices 200d (e.g., headsets and/or
watches). User devices 200 may also include other computing devices
having other form factors, such as computing devices included in
desktop computers 200e, vehicles, gaming devices, televisions, or
other appliances (e.g., networked home automation devices and home
appliances).
[0038] The user devices 200 may use a variety of different
operating systems 224. In examples where a user device 200 is a
mobile device, the user device 200 may run an operating system
including, but not limited to, ANDROID.RTM. developed by Google
Inc., IOS.RTM. developed by Apple Inc., or WINDOWS PHONE.RTM.
developed by Microsoft Corporation. Accordingly, the operating
system 224 running on the user device 200 may include, but is not
limited to, one of ANDROID.RTM., IOS.RTM., or WINDOWS PHONE.RTM..
In an example where a user device 200 is a laptop 200a or desktop
computing device 200e, the user device 200 may run an operating
system 224 including, but not limited to, MICROSOFT WINDOWS.RTM. by
Microsoft Corporation, MAC OS.RTM. by Apple, Inc., or Linux. User
devices 200 may also access or communicate with the advertisement
system 400 and/or the profile system 300 while running operating
systems 224 other than those operating systems 224 described above,
whether presently available or developed in the future.
[0039] Referring also to FIGS. 3A and 3B, the advertisement system
400 receives an advertisement request 212 from a user device 200
and the advertisement system 400 performs a search and/or analysis
within each its respective databases 420 (i.e., advertising data
store 420) to identify one or more advertisements 431 for sending
corresponding advertisement results 220 to the user device 200. In
some examples, it is desirable to include personalized or targeted
advertisement 431 (i.e., advertisement results 220) based on an
advertisement request 212 and a user profile record 370 (FIGS. 5A
and 5B) associated with a user 10.
[0040] To provide personalized and targeted displayed
advertisements 230 to the user 10, the system 100 spiders, crawls,
and indexes applications 204. Examples of data include, but are not
limited to, news articles, blog posts, and sports scores. There are
many content providers 140 that provide content feeds 142 where the
content feed 142 provides near real-time data. RSS feeds utilize a
standard family of Web feed formats to publish frequently updated
content, such as blog entries, news articles, audio, and video.
Content obtained from a content feed 142 may be referred to as a
content document 144. In some examples, a content document 144
includes a web link to the source of the content. For example, a
web link to a news article. Generally, the broader class of web
feeds 142 and equivalents thereof may be referred to as "content
feeds," which may also include channel subscriptions.
Traditionally, a user 10 subscribes to a content feed 142 and a
client application (e.g., a content reader, such as an RSS reader)
monitors a website that provides the content feed 142 for new
content document 144, allowing the user 10 to receive a new content
document 144 when it becomes available. Therefore, a content feed
142 may refer to a collection of grouped application states within
an application 204. Put another way, a content feed 142 may
represent content documents 144 of an application that is grouped
for any suitable reason. The grouping can be made by other users 10
of the application or the application provider 140 ("content
provider"). For example, a user 10 may subscribe to a YOUTUBE.RTM.
channel, a FACEBOOK.RTM. feed (follow on FACEBOOK.RTM.), a team
feed on ESPN.RTM. (e.g., follow DETROIT TIGERS.RTM.), a topic feed
on THE NEW YORK TIMES.RTM. (e.g., Science and Tech news). In some
of these examples, the user 10 of the application groups the
content (e.g., YOUTUBE.RTM. and FACEBOOK.RTM.), while in other
examples the content provider groups the content (e.g., ESPN.RTM.
and THE NEW YORK TIMES.RTM.). The foregoing is all referred to as
subscription data. Subscription data can refer to any information
that indicates a set of content feeds 142 that a user 10 has
expressly requested to receive from an application or a content
provider 140. Thus, the current system 100 leverages the user's
subscription data 229 to content feeds 142 to enhance and
personalize advertisement results 220 that include one or more
advertisements 431 that may be rendered on a GUI 240 of a user
display 240 as displayed advertisement results 230.
[0041] The user 10 may be subscribed (via the user device 200) to
one or more content feeds 142 (e.g., RSS feeds) provided by a
content provider 140. The content feeds 142 may also be referred to
as subscription data 229. The advertisement system 400 may
recommend advertised content feed data 144 based on a user's
subscription to one or more other content feeds 142 from one or
more content providers 140. The advertisement system 400 may
personalize advertisements 431 based on the user profile 370, which
includes subscription data of a user's subscription to one or more
content feeds 142. Types of content feeds 142 may include, but are
not limited to, RSS feeds and Atom feeds.
[0042] Referring again to FIG. 1, the advertisement application 216
may be part of another application 204 that allows a user 10 to
enter text into a text field 214 or that can send an advertisement
request 212 to the advertisement system 400 based on one or more
triggering events. For example, a triggering event may be when the
user 10 opens an application 204 associated with the advertisement
application 216 to view content provided by the application 204. In
the example shown, the triggering event that sends the
advertisement request 212 to the advertising system 400 is the user
10 entering text in a text field 214. However, in some examples,
the action of launching an application 204 associated with the
advertisement application 216 is the triggering event. As shown,
the user 10 enters the letters `ear` in the text field 214 (e.g., a
search box) of the graphical user interface (GUI) 240 of the
application 204 that includes the advertisement application 216
(which may be part of a native application, such as, but not
limited to, a search application, a news application, or a
restaurant review application) running on the user device 200. The
GUI displays a list 231 of displayed results 230. The displayed
results 230 include advertisement results 230 and non-advertisement
results (not shown). The advertisement results 230 are visually
distinguishable from the non-advertisement results. For example,
the advertisement results 230 may include an advertisement icon 238
associated with the advertisement results 230. The advertisement
icon 238 is indicative of an advertisement from an advertiser. The
advertisement results 220 are sent to the user 10 of the user
device 200 that initiated the advertisement request 212. Therefore,
the advertisement results 220 are based on a search/analysis of the
advertisement data store 420 using the advertisement request 212, a
user data store 360 storing the user profiles 370, and target
parameters 580 (stored in the advertisement data store 420). As a
result, the advertisement results 220 are personalized based on the
user profile record 370 of the user 10. In some examples, the
displayed advertisements 230 are a combination of information from
the data sources 130, a user data store 360, and advertising data
store 420. In some examples, the system 100 provides the user with
content feeds 142 (e.g., RSS feeds) from one or more content
providers 140 as an advertisement 230. As an example, when the user
10 enters `earthquakes` in a text field 214, the advertisement
system 400 considers the user profile 370, including the user
subscriptions tags 376, and any target parameters 580 provided in
the advertisement data store 420. The target parameters 580
included in the advertisement data store 420 may indicate one or
more elements (e.g., user location) that once satisfied, provides
the user 10 with a specific advertisement. For example, if the user
profile 370 indicates that the user is located in San Jose and/or
that the user 10 is subscribed to one or more content feeds
relating to sports in the San Jose area, the advertisement system
400 may provide advertisements 431 (i.e., displayed advertisements
230) relating to the `San Jose Earthquakes,` which are a
professional soccer team based in San Jose, Calif. The
advertisements 230 may include, for example, purchasing tickets to
an upcoming game, or a restaurant hosting a soccer event.
Therefore, the displayed advertisement results 230 may be a
combination of information from the data sources 130, the user data
store 360, the advertisement data store 420, and content feeds 142
(e.g., RSS feeds) from one or more content providers 140,
satisfying one or more targeting parameters 538 (FIGS. 6A and
6B).
[0043] In some implementations, the user device 200 executes one or
more software applications 204. A software application 204 may
refer to computer software that, when executed by a computing
device, causes the computing device to perform a task. In some
examples, a software application 204 is referred to as an
"application", an "app", or a "program". Example software
applications 204 include, but are not limited to, word processing
applications, spreadsheet applications, messaging applications,
media streaming applications, social networking applications, and
games.
[0044] Applications 204 may be executed on a variety of different
user devices 200. In some examples, a native application 204a is
installed on a user device 200 prior to a user 10 purchasing the
user device 200. In other examples, the user may 10 download and
install native applications 204a on the user device 200.
[0045] The functionality of an application 204 may be accessed on
the computing device 200 on which the application 204 is installed.
Additionally or alternatively, the functionality of an application
204 may be accessed via a remote computing device 112. In some
examples, all of an application's functionality is included on the
computing device 112, 200 on which the application 204 is
installed. These applications 204 may function without
communication with other computing devices 112, 200 (e.g., via the
network 120). In other examples, an application 204 installed on a
computing device 200 may access information from other remote
computing devices 112 during operation. For example, a weather
application installed on a computing device 200 may access the
latest weather information via the Internet and display the
accessed weather information to the user 10 through the installed
weather application. In still other examples, a web-based
application 204b (also referred to herein as a web application) may
be partially executed by the user's computing device 200 and
partially executed by a remote computing device 112. For example, a
web application 204b may be an application 204 that is executed, at
least in part, by a web server and accessed by a web browser (e.g.,
a native application 204a) of the user's computing device 200.
Example web applications 204b may include, but are not limited to,
web-based email, online auctions, and online retail sites.
[0046] In general, the user device 200 may communicate with the
profile system 300 and/or the advertisement system 400 using any
software application 204 (e.g., advertisement application 216) that
can transmit advertisement requests 212 to the advertisement system
400 and usage data to the profile system 300. In some examples, the
user device 200 runs a native application 204a that is dedicated to
interfacing with the profile system 300 and/or the advertisement
system 400, such as a native application 204a dedicated to
advertisement (e.g., an advertisement application 216). In some
examples, the user device 200 communicates with the profile system
300 and/or the advertisement system 400 using a more general
application 204, such as a web-browser application 204b accessed
using a web browser native application 204a. Although the user
device 200 may communicate with the profile system 300 and/or the
advertisement system 400 using the native advertisement application
216 and/or a web-browser application 204b, the user device 200 may
be described hereinafter as using the native advertisement
application 216 to communicate with the profile system 300 and/or
the advertisement system 400. In some implementations, the
functionality attributed to the advertisement application 216 is
included as a component of a larger application 204 that has
additional functionality. For example, the functionality attributed
to the advertisement application 216 may be included as part of a
native application 204a or a web application 204b as a feature that
provides advertisement capabilities.
[0047] Native applications 204a can perform a variety of different
functions for a user 10. For example, a restaurant reservation
application can make reservations for restaurants. As another
example, an internet media player application can stream media
(e.g., a song or movie) from the Internet. In some examples, a
single native application 204a can perform more than one function.
For example, a restaurant reservation application may also allow a
user 10 to retrieve information about a restaurant and read user
reviews for the restaurant in addition to making reservations. As
another example, an internet media player application may also
allow a user 10 to perform searches for digital media, purchase
digital media, and generate media playlists. In such examples, the
advertisement system 400 may include advertisements in the results
associated with each of the native applications 204a.
[0048] Referring to FIGS. 1-3B, in some examples the advertisement
system 400 includes an advertisement module 410 in communication
with an advertisement data store 420. The profile system 300 may
include a profile generation module 350 and a data collection
module 380, both in communication with a user data store 360.
Additionally, in some examples, the profile system 300 includes an
entity data store 362 in communication with the user data store
360, the profile generation module 350, and the data collection
module 380. The user data store 360 and/or the entity data store
362 and/or advertisement data store 420 may include one or more
databases, indices (e.g., inverted indices), tables, files, or
other data structures, which may be used to implement the
techniques of the present disclosure. As shown, the profile system
300 is a standalone system, but in some examples, the profile
system 300 is part of the advertisement system 400.
[0049] The data sources 130 may include a variety of different data
providers. The data sources 130 may include data from application
developers 130a, such as application developers' websites and data
feeds provided by developers. The data sources 130 may include
operators of digital distribution platforms 130b configured to
distribute native applications 204a to user devices 200. Example
digital distribution platforms 130b include, but are not limited
to, the GOOGLE PLAY.RTM. digital distribution platform by Google,
Inc., the APP STORE) digital distribution platform by Apple, Inc.,
and WINDOWS PHONE.RTM. Store developed by Microsoft
Corporation.
[0050] The data sources 130 may also include other websites, such
as websites that include web logs 130c (i.e., blogs), application
review websites 130d, or other websites including data related to
applications. Additionally, the data sources 130 may include social
networking sites 130e, such as "FACEBOOK.RTM." by Facebook, Inc.
(e.g., Facebook posts) and "TWITTER.RTM." by Twitter Inc. (e.g.,
text from tweets). Data sources 130 may also include online
databases 130f that include, but are not limited to, data related
to movies, television programs, music, and restaurants. Data
sources 130 may also include additional types of data sources in
addition to the data sources described above. Different data
sources 130 may have their own content and update rate.
[0051] The profile system 300 or the advertisement system 400
retrieves data from one or more of the data sources 130. The data
retrieved from the data sources 130 can include any type of data
related to application functionality and/or application states. The
profile system 300 or the advertisement system 400 generates
application state records 330 based on the data retrieved from the
data sources 130. In some examples, a human operator manually
generates some data included in the application state records 330.
The profile system 300 or the advertisement system 400 may update
data included in the application state records 330 over time so
that the profile system 300 or the advertisement system 400
provides up-to-date results 220.
[0052] Referring to FIGS. 4, 5A, and 5B, in some examples, the
profile system 300 includes a processing system 302 that includes a
profile generation module 350 and a data collection module 380. The
profile system 300 also includes a storage system (i.e.,
non-transitory storage device) that includes a user data store 360
for storing one or more user profiles 370. In some examples, the
storage system 304 of the profile system 300 includes an entity
data store 362 for storing a plurality of entity records 500. Each
entity record 500 includes data related to an entity 501. An entity
501 may be any business or place with a geolocation, a person, or
an event (e.g., restaurants, bars, gas stations, supermarkets,
movie theaters, doctor offices, parks, and libraries, etc.). Each
entity record 500 may be associated with one or more subscription
tags 376 of the user profile 370, and allows the system to provide
the user 10 with personalized advertisements 431. For example, if a
user profile record 370 includes a subscription tag 376 to The
Detroit News, then an entity 501 associated with the subscription
tag 376 may be Detroit or News. Therefore, the system 100 utilizes
the entity 501 information associated with the subscription tags
376 provide advertisements that also have similar or the same
entities 501. In this case, the advertisement system 400 may
provide an advertisement result 220 to, for example, subscribe to
the "Detroit Press," which also provides news relating to
Detroit.
[0053] The profile generation module 350 generates user profile
records 370 and stores the generated user profile records 370 in
the user data store 360. In some examples, a user 10 wants to share
usage data of his/her usage of one or more applications installed
on the user device 200. When the user 10 gives/allows the
advertisement system 400 permission to access his/her data usage,
the profile generation module 350 (executing on the user device 200
or the in communication with the user device 200) generates a user
profile record 370 of a user. In some examples, the advertisement
system 400 executes an application programming interface (API) for
accessing the subscription data; while in others, the user 10 may
manually enter the subscription data. The profile generation module
350 generates a profile record with each user 10. In some example,
the profile record 370 is associated with one device 200 of a user
10, while in other examples; the profile record 370 is associated
with more than one user device 200 of the same user 10. For
example, a user 10 may have at least two of a laptop 200a, a tablet
200b, a smart phone 200c, a wearable computing device 200d (see
FIG. 1), and desktop computers 200e; therefore, the profile record
370 of a user 10 is associated with all the devices 200 of that
user 10. The profile record 370 includes a profile identifier (ID)
372, user profile data 374, and user subscription tags 376 (in some
examples, the user subscription tags 376 are part of the user
profile data 374). The profile ID 372 uniquely identifies a user 10
associated with the profile record 370. The user profile data 374
may indicate any suitable information relating to the user 10 or
the one or more user device(s) 200. User profile data can include a
user ID 374a that uniquely identifies each user 10, a
city/state/country of the user 10 (e.g., location data 374b), one
or more devices 200 of the user 10 (e.g., device data 374c), and
applications 204 downloaded by the user 10 on the user device 200
and/or applications 204 installed on the user device 200 installed
by the manufacturer of the device 200 and not the user 10 (e.g.,
application(s) data 374d).
[0054] The subscription tags 376 indicate one or more
subscription(s) of the user 10 to one or more content feed(s) 142.
For example, a subscription tag 376 may be an ordered pair that
indicates the application 204 and the content feed 142. For
example, a subscription tag 376 may take the form (application,
feed) (e.g., (ESPNO, DETROIT LIONS.RTM.) or (YOUTUBE.RTM.,
Funny_stuff). In other implementations, the subscription tags 376
may be alphanumeric strings that represent the ordered pair. The
ordered pairs may be stored in a lookup table that is indexed by
the alphanumeric strings in the user data store 360. The
subscription tags 376 may be known subscription tags 376a or
unknown subscription tags 376b. Known subscription tags 376a are
subscription tags 376 that have been crawled before, while unknown
subscription tags 376b are subscription tags 376 to content feeds
142 that may have only a few followers and the corresponding data
144 has not been crawled before. The profile generation module 350
may obtain the user's subscription data by accessing the
application data of the user's installed applications 204 (e.g.,
native applications 204a).
[0055] In some examples, each subscription tag 376 is associated
with one or more entity tag data 377. The entity tag data 377
relates to one or more entities 501 that the profile system 300
determines based on keywords of the subscription tag 376. For
example, if a known subscription tag 376a is to the DETROIT LIONS
NEWS, then one or more entities 501 that the profile system 300 may
associate with the known subscription tag 376a are, but not limited
to, "Detroit Sports," "Detroit News," "Sports Scores," . . . etc.
Each entity 501 has an associated entity record 500 (FIGS. 5G and
5H). Therefore, the entities data tag 377 associated with the
subscription tags 376, allows the advertisement system 400 to
provide the user 10 with more specific personalized advertisement
431.
[0056] The data collection module 380 identifies content feeds 142
for data or document 144 retrieval. In some implementations, the
data collection module 380 searches a digital distribution platform
130b to identify popular applications 204. For these applications
204, the data collection module 380 may filter applications 204
that provide content (e.g., news, lifestyle, video streaming, etc.)
and may forego other types of applications (e.g., games,
productivity, etc.). For each of the content providing applications
204, the data collection module 380 may visit the website of the
content provider 140 that offers the website to find the address of
the website (e.g.,
https://play.google.com/store/apps/details?id=com.cnn.mobile.android.phon-
e) and identify the website associated with the web developer
(http://www.cnn.com/). In this example, the data collection module
finds the "find website" link in the Play Store CNN Breaking News
app page and can access the website of the application 204. After
locating the website (i.e., CNN Breaking News application page),
the data collection module 380 parses the website of the content
provider 140 (e.g., CNN) to find a link to subscribe to a content
feed 142 provided by the content provider 140. Once subscribed to
the content feed 142, the data collection module 380 creates a feed
record 390 (FIG. 5E-5F) corresponding to the content feed 142 (or
RSS feed 142). Additionally, the collection module 380 creates one
or more entity records 500 (FIGS. 5G and 5H) associated with the
content feed records 390.
[0057] Referring to FIGS. 5C and 5D, the user data store 360
includes a plurality of different application state records 330.
Each application state record 330 may include data related to a
function of an application 204 and/or the state of the application
204 resulting from performance of the function. An application
state record 330 may include an application state identifier (ID)
332, application state information 334, an application identifier
(ID) 334a, and one or more access mechanisms 202, 202a, 202b, 202c
used to access functionality provided by an application 204.
[0058] The application state ID 332 may be used to identify the
application state record 330 among the other application state
records 330 included in the user data store 360. Each application
state record 330 may be associated with a feed record 390 having
associated documents 144. The application state record 330 may
provide access to a document 144 of the content feed 142 associated
with the feed record 390. In some implementations, an application
state ID 332 is a string of alphabetic, numeric, and/or symbolic
characters (e.g., punctuation marks) that uniquely identify a state
of an application 204. Put another way, an application state ID 332
is a unique reference to a state of an application. In some
implementations, an application state ID 332 can be in the format
of a resource identifier. For example, the application state ID 332
may be a uniform recourse locator (URL) or an application resource
identifier. In these implementations, the application state ID 332
may be used by a user device 200 to access a web application or one
or more editions of a native application 204a, respectively. In
some implementations, an application state ID 332 can map to one or
more access mechanisms. In these implementations, the application
state ID 332 may map to a web resource identifier (e.g., a URL)
and/or one or more application resource identifiers. For instance,
a state of an example software application, exampleapp, may be
accessed via a web application edition and two native application
editions (e.g., an edition configured for the ANDROID operating
system and an edition configured for the WINDOWS PHONE operating
system). In this example, the web resource identifier may be
www.exampleapp.com/param1=abc¶m2=xyx, the first application
resource identifier may be
android.exampleapp::param1=abc¶m2=xyx, and the second
application resource identifier may be
windows.exampleapp::param=abc¶m2=xyx. In this example, an
application state ID 332 maps to the web resource identifier and
the two application resource identifiers. An application state ID
332 may have a URL-like structure that utilizes a namespace other
than http://, such as "func://", which indicates that the string is
an application state ID 332. In the example of "exampleapp" above,
the application state ID 332 corresponding to the example state may
be func://exampleapp::param1=abc¶m2=xyx, which maps to the
access mechanisms 202 described above. In another example, an
application state ID 332 may take the form of a parameterizable
function. For instance, an application state ID 332 may be in the
form of "app_id[action(parameter_1, . . . , parameter_n)], where
app_id is an identifier (e.g., name) of a software application,
action is an action that is performed by the application (e.g.,
"view menu"), and parameter_1 . . . parameter_n are n parameters
that the software application receives in order to access the state
corresponding to the action and the parameters. Drawing from the
example above, an application state ID 332 may be
"exampleapp[example_action(abc, xyz)]. Given this application state
ID 332 and the referencing schema of the example application, the
foregoing application state ID 332 may be used to generate the
access mechanisms defined above. Additionally or alternatively, the
above example application state ID 332 may map to the access
mechanisms defined above. Furthermore, while application state IDs
332 have been described with respect to resource identifiers, an
application state ID 332 may map to one or more scripts that access
a state of a software application or may be utilized to generate
one or more scripts that access a state of the software
application. It is noted that some software applications may have a
common scheme for accessing all of their respective native
application editions. In such scenarios, a single application
resource identifier may access multiple application editions.
[0059] In a more specific example, if the application state record
330 describes a function of the YELP.RTM. native application, the
application state ID 332 may include the name "Yelp" along with a
description of the application state described in the application
state information 334. For example, the application state ID 332
for an application state record 330 that describes the restaurant
named "The French Laundry" may be "Yelp--The French Laundry." In an
example where the application state ID 332 includes a string in the
format of a URL, the application state ID 332 may include the
following string
"http://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1" to
uniquely identify the application state record 330. In additional
examples, the application state ID 332 may include a URL using a
namespace other than "http://," such as "func://," which may
indicate that the URL is being used as an application state ID in
an application state record 330. For example, the application state
ID 332 may include the following string
"func://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1."
[0060] The application state information 334 may include data that
describes an application state into which an application 204 is set
according to the access mechanism(s) 202 in the application state
record 330. Additionally or alternatively, the application state
information 334 may include data that describes the function
performed according to the access mechanism(s) 202 included in the
application state record 330. The application state information 334
can include text, numbers, and symbols that describe the
application state. The types of data included in the application
state information 334 may depend on the type of information
associated with the application state and the functionality
specified by the application access mechanism 202a. The application
state information 334 may include a variety of different types of
data, such as structured, semi-structured, and/or unstructured
data. The application state information 334 may be automatically
and/or manually generated based on documents retrieved from the
data sources 130. Moreover, the application state information 334
may be updated so that up-to-date advertisement results 220 can be
provided in response to an advertisement request 212.
[0061] In some examples, the application state information 334
includes data that is presented to the user 10 by an application
204 when the application 204 is set in the application state
defined by the access mechanism(s) 202. For example, if one of the
access mechanism(s) 202 is an application access mechanism 202a,
the application state information 334 may include data that
describes a state of the native application 204a after the user
device 200 has performed the one or more operations indicated in
the application access mechanism 202a. For example, if the
application state record 330 is associated with a shopping
application, the application state information 334 may include data
that describes products (e.g., names and prices) that are shown
when the shopping application is set to the application state
defined by the access mechanism(s) 202. As another example, if the
application state record 330 is associated with a music player
application, the application state information 334 may include data
that describes a song (e.g., name and artist) that is played when
the music player application is set to the application state
defined by the access mechanism(s) 202.
[0062] The types of data included in the application state
information 334 may depend on the type of information associated
with the application state and the functionality defined by the
access mechanism(s) 202. For example, if the application state
record 330 is for an application 204 that provides reviews of
restaurants, the application state information 334 may include
information (e.g., text and numbers) related to a restaurant, such
as a category of the restaurant, reviews of the restaurant, and a
menu for the restaurant. In this example, the access mechanism(s)
202 may cause the application 204 (e.g., a native application 204a
or a web-browser application 204b) to launch and retrieve
information for the restaurant. As another example, if the
application state record 330 is for an application 204 that plays
music, the application state information 334 may include
information related to a song, such as the name of the song, the
artist, lyrics, and listener reviews. In this example, the access
mechanism(s) 202 may cause the application 204 to launch and play
the song described in the application state information 334.
[0063] The profile system 300 and/or the advertisement system 400
may generate application state information 334 included in an
application state record 330 in a variety of different ways. In
some examples, the profile system 300 and/or the advertisement
system 400 retrieves data to be included in the application state
information 334 via partnerships with database owners and
developers of native applications 204a. For example, the profile
system 300 and/or the advertisement system 400 may automatically
retrieve the data from online databases 130f that include, but are
not limited to, data related to movies, television programs, music,
and restaurants. In some examples, a human operator manually
generates some data included in the application state information
334. The profile system 300 and/or the advertisement system 400 may
update data included in the application state information 334 over
time so that the profile system 300 and/or the advertisement system
400 300 provides up-to-date results 220.
[0064] The application ID 334a may be used to identify a native
application 204a associated with the application state record 330.
The application ID 334a may be a string of alphabetic, numeric,
and/or symbolic characters (e.g., punctuation marks) that uniquely
identifies the associated native application 204a. In some
examples, the application ID 334a is native application 204a in
human readable form. For example, the application ID 334a may
include the name of the application 204 referenced in the access
mechanism(s) 202. In a specific example, the application ID 334a
for a restaurant finder application 204 may include the name of the
restaurant finder application.
[0065] An application state record 330 including an application
access mechanism 202 that causes an application 204 to launch into
a default state may include application state information 334
describing the native application 204a, instead of any particular
application state. For example, the application state information
334 may include the name of the developer of the application 204,
the publisher of the application 204, an application identifier
(ID) 332a identifying the application associated with the
application state record 330, keyword 334b relating to the access
mechanism 202 content (e.g., documents 144), a category 334c (e.g.,
genre) of the application 204, location data 334d associated with
the application state record 330 or the application providing the
application ID 334a, a description of the application 204 (e.g., a
developer's description), and the price of the application 204, or
any other relevant data. The application state information 334 may
also include security or privacy data about the application 204,
battery usage of the application 204, and bandwidth usage of the
application 204. The application state information 334 may also
include application statistics. Application statistics may refer to
numerical data related to a native application 204a. For example,
application statistics may include, but are not limited to, a
number of downloads, a download rate (e.g., downloads per month), a
number of ratings, and a number of reviews. In some examples, the
access mechanisms 202 of an application state record 330 are based
on or are generated from the feed access mechanism data 334c, which
provides a user 10 access to the feed document 144.
[0066] In some implementations, an application state record 330
includes multiple different application access mechanisms 202,
202a, 202b, 202c that include a variety of information. The
application access mechanism 202 may include edition information
that indicates the application edition with which the application
access mechanism 202 is compatible. For example, the edition
information may indicate the operating system 224 with which the
application access mechanism 202 is compatible. Moreover, different
application access mechanisms 202 may be associated with different
editions of a native application 204a. A native application edition
(hereinafter "application edition") refers to a particular
implementation or variation of a native application 204a. For
example, an application edition may refer to a version of a native
application 204a, such as a version 1.0 of a native application
204a or a version 2.0 of a native application 204a. In another
example, an application edition may refer to an implementation of a
native application 204a for a specific platform, such as a specific
operating system 224.
[0067] The different application access mechanisms 202 included in
an application state record 330 may cause the corresponding
application editions to launch and perform similar functions.
Accordingly, the different application access mechanisms 202
included in an application state record 330 may cause the
corresponding application editions to be set into similar
application states. For example, if the different application
access mechanisms 202 reference different editions of an
information retrieval application, the different application access
mechanisms 202 may cause the corresponding application editions to
retrieve similar information. In another example, if the different
application access mechanisms 202 reference different editions of
an internet music player application, the different application
access mechanisms 202 may cause the corresponding application
editions to play the same song.
[0068] In some examples, an application state record 330 for a
native application that retrieves restaurant information may
include multiple different application access mechanisms 202 for
multiple different application editions. Assuming the application
state record 330 is associated with a specific Mexican restaurant,
the application access mechanisms 202 for the different application
editions may cause each application edition to retrieve information
for the same specific Mexican restaurant. For example, a first
application access mechanism 202 may cause a first application
edition (e.g., on a first OS) to retrieve information for the
specific Mexican restaurant. A second application access mechanism
202 may cause a second application edition (e.g., on a second OS)
to retrieve information for the specific Mexican restaurant. In
some examples, the profile system 300 can determine whether to
transmit the application access mechanism 202 in the advertisement
results 220 based on whether the user device 200 can handle the
application access mechanism 202.
[0069] FIGS. 5E and 5F illustrate exemplary feed records 390. A
feed record 390 may indicate a feed identifier (ID) 392,
identifying the content feed 142. The feed record 390 may also
include, an application ID 394a of an application that provides the
content feed 142, a feed access mechanism 394b, 202 from which the
content of the content feed 142 is received (e.g., a URL of the
content or RSS feed), access mechanism data 394c that defines
templates, rules, and/or instructions for generating access
mechanisms 394b to access content obtained from the content feed
142, feed location data 394d that indicates geographic regions to
which the content feed 142 is pertinent, and feed category data
394e that indicates the different categories of content that are
obtained from the content feed 142 (e.g., US News, All News,
Sports, Science, Tech, Entertainment, etc.). In some examples,
while the data collection module 380 is generating feed records
390, the data collection module 380 also tags the feed record 390
with the location data 394d. The location data 394d is inherited by
the application state records 330 that are generated from the
content obtained from the content feed 142. Thus, the generated
feed geolocation data 394d allows the system 100 to personalize and
localize the feed documents 144 (i.e., the feed contents) to a
specific user 10.
[0070] The data collection module 380 utilizes the subscription
tags 376 to identify potential content of the content providers 140
to spider and crawl. In particular, many content feeds 142 within
applications 204 are not readily known. For example, there are
thousands or millions of YOUTUBE.RTM. channels, many of which only
have few followers who follow the channel. Thus, it may be a
difficult task for a crawler to find the remote content associated
with the YOUTUBE.RTM. channel that has the few followers. The data
collection module 380 may utilize subscription tags 376 of the
newly discovered content feeds 142 to identify content feeds 142
that may be crawlable. In some implementations, the profile
generation module 350 verifies whether a subscription tag 376 is
known or unknown, and each time the profile generation module 350
identifies an unknown subscription tag 376, the profile generation
module 350 may add the unknown subscription tag to a set of unknown
subscription tags 376. The data collection module 380 can utilize
the set of unknown subscription tags 376 to determine how to spider
and crawl an application. As the data collection module 380 crawls
a new application state, the data collection module 380 creates an
application state record 330 (FIGS. 5B and 5C) or a feed records
390 (FIGS. 5D and 5E) corresponding to the newly crawled state. If
the application state belongs to a content feed 142, the
application record 330 is tagged with a subscription tag 376. In
this way, the application state record 330 indicates that the
content document 144 obtained at the particular application state
is accessible through the content feed 142.
[0071] Referring back to FIG. 4, once the data collection module
380 generates the feed record 390 and the entity records 500, the
data collection module 380 periodically checks the content feed 142
for any new data or contents or documents 144 (e.g., every few
minutes, hours, or days). The data collection module 380
periodically checks the feeds 142 for updated information for each
content feed 142 it is subscribed to. When the data collection
module 380 detects new content or feed documents 144, the data
collection module 380 crawls the new content (e.g., a new article)
to identify data, such as the title, keywords, any access
mechanisms 202 that are used (at the very least the data collection
module 380 can identify the URL from which the content was
obtained). If the content or documents 144 being crawled do not
include application resource identifiers embedded therein, the data
collection module 380 can generate application resource identifiers
based on the web resource identifiers and the access mechanism data
defined in the feed record. For example, if the article is
referenced by a number in the web URL (e.g., " . . .
/article==1234") and the template for generating application access
mechanisms includes an article number field, the data collection
module 380 can generate the application access mechanism by
substituting the article number found in the web URL into the
template. The data collection module 380 generates an application
state record based on the newly crawled content and the identified
or generated access mechanisms 202 (FIG. 11). The data collection
module 380 then updates the user data store 360 with the new and/or
updated records 330, 390, 500.
[0072] In some implementations, the data collection module 380 also
generates application state records 330 for applications that do
not have content feeds 142. In these implementations, the data
collection module 380 generates an application state ID 332
configured to generate one or more access mechanisms 202 for
accessing the "other application." First, the system 100 determines
which applications 204 for which the system 100 should generate the
application state records 330. For example, the system 100 can
associate TWITTER.RTM. or FLIPBOARD.RTM. to CNN.RTM., THE NEW YORK
TIMES.RTM., FOX NEWS.RTM., etc., thereby indicating that when the
system 100 finds new content or documents 144 on CNN.RTM. or THE
NEW YORK TIMES.RTM. then the system 100 may also generate
application state records 330 for TWITTER.RTM. or FLIPBOARD.RTM..
In some examples, the system 100 uses a lookup table (not shown) to
identify other applications (not initially identified) or the
system 100 may include the other applications hard coded into the
feed record 390. The system 100 (i.e., the data collection module
380) can then obtain access mechanism data 394c for the other
application and generate an application state ID 332 and/or access
mechanisms 202 (application resource identifier or script) based on
the content or documents 144 of the crawled application. For
example, we can insert the title of the application into a template
for generating access mechanisms 202 for the other application (see
Twitter example above). The data collection module 380 can then
generate an application state record 330 using the generated
application state ID 332 and/or access mechanism 202. The data
collection module 380 can utilize some of the keywords extracted
from the crawled content or documents 144 to populate the keywords
of the new application state record 330.
[0073] Referring to FIGS. 5G and 5H, the entity data store 362
includes a plurality of different entity records 500. Each entity
record 500 may include data related to an entity 501. The entity
501 can be any business or place with a geolocation or person or
event (e.g., restaurants, bars, gas stations, supermarkets, movie
theaters, doctor offices, sports team, movie star, celebrity,
politician, parks, and libraries, etc.). An entity record 500 may
include an entity identifier or name (ID) 502, entity location data
506 (e.g., geolocation data), an entity category 508 (and
optionally one or more sub-categories 508a-508n), entity
information 504, and associated entity subscription tags 510.
[0074] The entity ID 502 may be used to identify the entity record
500 among the other entity records 500 included in the entity data
store 362. The entity ID 502 may be a string of alphabetic,
numeric, and/or symbolic characters (e.g., punctuation marks) that
uniquely identifies the associated entity record 500. In some
examples, the entity ID 502 describes the entity 501 in human
readable form. For example, the entity ID 502 may include the name
string of the entity 501 or a human readable identifying the entity
501. In some examples, the entity ID 502 includes a string in the
format of a uniform resource locator (URL).
[0075] In a more specific example, if the entity record 500
describes a restaurant named QDOBA.RTM. (QDOBA is a registered
trademark of Qdoba Restaurant Corporation), the entity ID 502 for
the entity record 500 can be "Qdoba." In an example where the
entity ID 502 includes a string in human readable form and/or a
URL, the entity ID 502 may include the following string "Qdoba,
42967 Woodward Avenue. Bloomfield Township, MI 48304" to uniquely
identify the entity record 500. Other unique identifiers are
possible as well, such a store number.
[0076] The entity information 504 may include any information about
the entity 501, such as text (e.g., description, reviews) and
numbers (e.g., number of reviews). This information may even be
redundant to other information contained in the entity record 500,
but optionally structured for display, for example. The entity
information 504 may include a variety of different types of data,
such as structured, semi-structured, and/or unstructured data.
Moreover, the entity information 504 may be automatically and/or
manually generated based on documents retrieved from the data
sources 130.
[0077] In some examples, the entity information 504 includes data
that is presented to the user 10 by an application 204 when the
application 204 is set in the application state defined by the
access mechanism(s) 202. For example, if one of the access
mechanism(s) 202 is an application access mechanism 202a, the
entity information 504 may be used in conjunction with the
application state information 334 of an application state record
330 to describe a state of the native application 204a after the
user device 200 has performed the one or more operations indicated
in the application access mechanism 202a.
[0078] The entity location data 506 may include data that describes
a location of the entity 501. This data may include a geolocation
(e.g., latitude and longitude coordinates), a street address, or
any information that can be used to identify the location of the
entity 501 within a geographical area. In some implementations, the
entity location data 506 defines a geo-location associated with the
application state record 330.
[0079] The entity category 508 provides a classification or
grouping of the entity 501. Moreover, the entity category can have
one or more sub-categories to further classify the entity 501. For
example, the entity record 500 could have an entity category 508 of
"restaurant" and a sub-category 508a a type of cuisine, such as
"French cuisine" or "contemporary." Any number of sub-categories
508a-508n may be assigned to classify the entity 501 for use during
a search.
[0080] The associated entity subscription tags 376, 510 include
subscription tags 376 relating to the entity 502. For example, if
the entity 501 is DETROIT LIONS.RTM., then associated subscription
tags 510 include any feed content 144 that mentions or includes the
DETROIT LIONS.RTM., which may include, but not limited to,
subscription tags 376, 510 to sports news, scores, and events
relating to the DETROIT LIONS.RTM.. In some examples, the
subscription tags 376, 510 are organized based on the entity
categories 508 or sub-categories 508a-508n. Therefore, the
advertisement module 430 may determine the subscription tags 376,
510 associated with the entity 501 based on the categories 508
and/or sub-categories 508.
[0081] Referring to FIGS. 6, 7A and 7B, in some implementations,
and as previously described, the advertisement system 400 is a
standalone system in communication with the profile system 300;
while in other examples, the advertisement system 400 and the
profile system 300 are one system. As shown, the advertisement
system 400 includes an advertisement processing system 402 in
communication with an advertisement storage system 404. The
processing system 402 includes an advertisement module 410, while
the storage system 404 includes an advertisement record data store
420 for storing advertisement records 430, and optionally the user
data store 360. The advertisement data store 420 stores
advertisement records 530 that include parameters 538, which may be
used to determine when and to which user 10 to send the
advertisement 431 associated with the advertisement record 530.
[0082] The advertisement system 400 delivers targeted/personalized
advertisements 431 to a user 10 based on the user profile record
370 (e.g., subscription data 376) associated with the user 10 and
the advertisement record 530, which enhances targeted
advertisement. The advertisement system 400 may receive an
advertisement request 212 from the user device 200. For instance,
the user 10 may be logged into a third party application via the
user GUI 240 of the user device 200 and the third party application
may be configured to transmit an advertisement request 212 upon
switching states within the third party application. Alternatively,
when the user 10 of an advertisement application 216 provides an
advertisement request 212 that is transmitted to the advertisement
system 400, the advertisement request 212 may trigger an internal
advertisement request to the advertisement system 400. For example,
if the application 204 is a restaurant review application that
lists restaurants within a certain distance of the user device 200,
a selection by the user 10 of one of the restaurants in a list of
restaurants might trigger an advertisement request 212 to the
advertisement system 400.
[0083] In response to the advertisement request 212, the
advertisement system 400 determines one or more advertisements 431
(e.g., an advertisement record 430) to transmit to the user device
200. In some implementations, third party advertisers agree to pay
a certain amount per a specific action (e.g., impression, click, or
purchase) of the user's interaction with the displayed
advertisement 230. In these implementations, the third party
advertisers select one or more elements of the profile record 370,
application state record 330, feed record 390, or entity record 500
that trigger an advertisement result 220 to be delivered to the
user device 200. For example, a third party advertiser may select
the (YOUTUBE.RTM., ROLLING STONES.RTM.) subscription tag 376 to
trigger an advertisement for an advertisement to a third party
music application 204. In another example, an advertiser may select
a (ESPN.RTM., Detroit Tigers) subscription tag 376 to trigger an
advertisement for a third party aftermarket ticket service. In yet
another example, a third party advertiser may select (Detroit NEWS,
LIONS) a user device location being within a threshold distance of
Detroit to trigger an advertisement 431 for LIONS game ticket
sales. Thus, the targeting parameters 538 associated with each
advertisement record 530 of an advertisement 431 may include one or
more elements (e.g., user device location) that when satisfied
triggers a specific advertisement 431 to be sent to the user device
200. Thus, the advertisers may select other constraints to limit
when the advertisements 230 are shown (e.g., geo-location, device
type, etc.). Therefore, more targeting parameters 538 provide for a
more targeted advertisement 431 to the user 10, where the
advertisements 431 may have higher relevance. Referring back to the
(ESPN, Detroit Tigers) example, the third party advertiser may want
an advertisement 431 to be shown to users 10 who live in the
Detroit metropolitan area or in cities where the Detroit Tigers may
be playing in the coming month. In this way, the advertisements 431
are more likely to result in a sale, as opposed to showing the
advertisement to a random Tigers fan in Anchorage Ak.
[0084] After the advertisement module 410 determines which
advertisement(s) 431 to send to the requesting user device 200, the
advertisement module 410 generates advertisement data 232
associated with the advertisement 431 that contains data and/or
instructions that the user device 200 can use to render the
advertisement 431 (FIG. 3B) on the user device GUI 240. As shown,
the advertisement data 232 is included in the advertisement results
220 sent to the user device 200. In some examples, the
advertisement data 232 includes pictures or special characters
relating to the advertisement 431.
[0085] An advertiser may generally refer to any party that
advertises a product, event, or may provide a message to a user 10.
The advertiser may advertise its own goods and services or the
goods and services of a related party. An advertiser can advertise,
for example, a business, products, services, media content, or any
other suitable item of commerce referenced in an application 204.
An application 204 including an advertisement application 216
provides a medium for the advertisers to advertise websites or
other services. Typically, an advertiser registers one or more
keywords and restrictions and advertisement data with the system
100. The advertisement module 410 generates one or more targeting
parameters 538 based on the keywords and restrictions that the
advertiser wants to trigger the advertisement 431 to be sent to the
user 10. Therefore, when a user device 200 satisfies the targeting
parameters 538 associated with an advertisement record 530 of an
advertisement 431, the advertisement system 400 sends the
corresponding advertisement 431 to the user device 200. In some
examples, the advertiser provides multiple advertisement data
versions associated with one advertisement 431, where each
advertisement data version satisfies a variation of a set of rules.
For example, two users 10 having user profile records 370 that
satisfy the targeting parameters 538 associated with an
advertisement 431 except for the age of each user 10 associated
with the profile record 370. In this instance, the advertiser may
want to send an advertisement having a different color based on the
age of the users 10.
[0086] In some examples, the advertisement system 400 sells
keywords to advertisers. The keywords are used to generate the
targeting parameters 538. The keyword may be sold to the
advertisers according to different advertising schemes, including
cost per number of impressions (e.g., number of views), cost per
click-through, and cost per action. According to the cost per
number of views model, the advertiser agrees to pay a specified
amount when the advertisement 230 is displayed a specified number
of times on a page of the GUI 240 in response to a relevant
advertisement request 212. According to the cost per click-through
model, the advertiser agrees to a pay a specified amount each time
a user 10 clicks on the advertisement 431 displayed in response to
a relevant advertisement request 212. Additionally or
alternatively, the advertiser agrees to pay a specified amount each
time a user 10 performs a specific action in response to the
advertisement 230 being displayed. For example, the advertiser can
agree to pay the specified amount when a user 10 clicks on a
hyperlink in the displayed advertisement 230 and makes a purchase
from the website associated with the displayed advertisement
230.
[0087] In some implementations, the advertisement system 400
generates one or more advertisement results 220 for the user 10.
The advertisement system 400 transmits (e.g., serves) the selected
advertisement results 220 to the user device 200 of the user 10.
The user device 200 associated with the user 10 may display on the
display 201 of the user device 200 the advertisement 431 as a
displayed advertisement 230. In some examples, when the
advertisement application 216 is part of another application 204,
the advertisement results 220 may be part of results of the other
application 204. For example, when the application 204 is a search
application 204 incorporating the advertisement application 216,
the search application 204 may provide its search results to
incorporate advertisements 431 within the search results. The user
10 may visually differentiate between the results provided by the
application 204 and the advertisement results 220. The
advertisement 431 may include information indicating that the
advertisement 431 is a sponsored result. For example, the displayed
advertisement 230 may include text indicating that the sponsored
application is a "Sponsored Result" an "Advertisement" or an "AD,"
as shown in icon 238.
[0088] The advertisement system 400 may include the advertisement
data store 420 used for storing advertisement records 430, which
the advertisement system 400 uses to generate advertisement results
220 to send to a user device 200. The advertisement data store 420
includes data associated with a plurality of different stored
advertisement 430. The data associated with a stored advertisement
430 may be referred to as "an advertisement record" (e.g.,
advertisement record 430 of FIGS. 7A and 7B). The advertisement
data store 420 may include a plurality of advertisement records 430
each including data for a different advertisement 431. The
advertisement records 430 may be generated by advertisers (using
advertiser devices), by advertisement agencies, or by providers of
any of the search and advertisement generation functionalities
described above (i.e., by providers of one or more of the
application 204 that incorporates the advertising application 216).
An advertisement 431 may include an application advertisement
(e.g., advertisement to download a restaurant review application),
an entity advertisement (e.g., advertisement that includes a coupon
for a restaurant, where the restaurant is the entity), or goods
advertisement (e.g., an advertisement to buy a purse that is
discounted).
[0089] Referring to FIGS. 7A and 7B, an advertisement record 430
may include a variety of different types of data related to an
advertisement 431. An advertisement record 430 may include data
that identifies the advertisement 431. For example, the
advertisement record 430 may include an advertisement name and/or
advertisement identifier (i.e., an "advertisement ID") 532 that
identifies the advertisement record 430 among the different
advertisement records 430 in the advertisement data store 420. The
advertisement record 430 may also include subscription data
534.
[0090] An advertisement record 430 may also include a sponsored
application name and/or sponsored application ID that identifies a
sponsored application and/or a business associated with the
advertisement record 430. A sponsored application 204 may be an
application 204 for which an advertiser has paid to have the
application 204 displayed to a user 10 on the user device display
201. For example, an advertiser may pay for a sponsored application
204 to be advertised along with other applications that are being
displayed for the user 10. The advertisement record 430 includes
advertisement content or data 232, 536 used to generate a displayed
advertisement 230 for the sponsored application 204 of the
advertisement record 430. For example, advertisement content 232,
536 may include text, images (e.g., icons), animations, and videos
associated with the sponsored application 204. The advertisement
431 (e.g., text and images) for a sponsored application 204 may be
displayed along with other results or information that is being
displayed to the user 10.
[0091] The advertisement record 430 may also include advertisement
parameters 538. Advertisement parameters 538 may define budget
parameters 592 associated with advertising the sponsored
application 204. Advertisement parameters 538 may also define
timing parameters 594 associated with advertising the sponsored
application 204, such as start and stop dates for advertising the
sponsored application 204 and/or time(s) of day during which the
sponsored application 204 is to be advertised. Additionally,
advertisement parameters 538 may specify user parameters associated
with advertising the sponsored application 204, such as, e.g., one
or more search query languages for which the sponsored application
204 is to be advertised and/or the number of times a particular
advertisement is to be displayed to each user 10. Other parameters
are possible as well.
[0092] Advertisement parameters 538 may also include a variety of
different types of targeting parameters 580. A targeting parameter
580 may refer to a condition that should be satisfied before the
advertisement system 400 generates an advertisement 431. The
advertisement system 400 may use targeting parameters 580 in an
advertisement record 430 to determine whether to generate an
advertisement 431 for the sponsored application 204, the goods, or
services associated with the advertisement record 430. For example,
the advertisement system 400 may generate an advertisement 431 for
the sponsored application 204, the goods, or services listed in an
advertisement record 430 when one or more targeting parameters 580
of the advertisement record 430 are satisfied. Example types of
targeting parameters 580 may include, but are not limited to,
keyword targeting parameters 582 and platform targeting parameters
584.
[0093] Additional advertisement (e.g., target) parameters 538 may
include, e.g., time-slotting, day-parting, category, geographical,
contextual, demographic, behavioral, platform, device, and partner
parameters. In other words, in some examples, the advertisement
system 400 generates an advertisement 431 for a sponsored
application 204 in one or more of the following instances: 1)
during one or more designated time slots; 2) on one or more given
days or during one or more specified portions thereof; 3) for one
or more particular categories of applications 204 on the user
device 200; 4) for users 10 located in one or more geographic
locations or regions; 5) based on context (e.g., for one or more
states of the user's computing device 200, the application 204 that
includes the advertisement application 216; 6) for one or more
specified user types or groups; 7) when one or more user behaviors
are detected (e.g., when the user 10 interacts with the user's
computing device 200 in a particular manner); 8) for one or more
platform (e.g., operating system) and device types associated with
the user's computing device 200 or the applications 204 on the user
device 200; or 9) when one or more specified partner computing
systems are used (e.g., when the user's computing device 200
communicates with the profile system 300 and/or the advertisement
system 400 via a designated partner computing system).
[0094] An advertisement record 430 may include a targeting
parameter function 581. A targeting parameter function 581 may
define which of the targeting parameters 580 of the advertisement
record 430 should be satisfied in order to generate an
advertisement 431. In some examples, the targeting parameter
function 581 includes a single targeting parameter 580. In these
examples, the advertisement system 400 may generate an
advertisement 431 for a sponsored application 204 based on
satisfaction of a single targeting parameter 580, such as a
similarity targeting parameter 581 or a keyword targeting parameter
584. In other examples, the targeting parameter function 581
includes multiple different targeting parameters 580 (e.g.,
advertising parameters). In these examples, the advertisement
system 400 may generate an advertisement 431 for a sponsored
application 204 based on satisfaction of multiple advertising
parameters 538, such as one or more similarity targeting parameters
581, one or more keyword targeting parameters 582, and a platform
targeting parameter 584. In scenarios where a targeting parameter
function 581 includes multiple targeting parameters 580, the
targeting parameter function 581 may include a Boolean function
that includes the multiple targeting parameters 580.
[0095] In some examples, the user 10 executes an application 204
that includes the advertisement application 216 causing the user
device 200 to send an advertisement request 212 to the
advertisement system 400. In some examples, the application 204 is
a search application, which allows the user 10 to select a search
button 215, after entering a search query in the text box 214,
which triggers the advertisement system 400 to initiate a
search/analysis of which advertisement results 220 to select for
sending to the user device 200. While in other examples, the system
executes an incremental search, e.g., an incremental advertisement
request 212. Incremental advertisement requests 212 refer to
advertisement requests 212 that are updated each time the user 10
enters a new character in the text box 214. For example, if the
user 10 intends to enter the query term "earthquake," the user 10
will enter the progression e-a-r-t-h-q-u-a-k-e. In this example,
the incremental search queries 212 include ("e," "ea," "ear,"
"eart" "earth," "earthq," "earthqu," "earthqua," "earthquak," and
"earthquake,"). The advertisement application 216 (on the user
device 200) monitors each character entry and determines a set of
possible query strings, as well as a probability that the possible
query string is the intended string. Drawing from the example
above, when the user 10 enters "ear" the query strings "ear"
"earth" and "earthquake" are probably going to have higher
probability strings than "earwig" or "earwax." The advertisement
application 216 can utilize a TRIE to generate the possible query
strings. TRIE, also known as a digital tree, radix tree, or prefix
tree, is an ordered tree data structure used to store a dynamic set
or associative array. The keys in a TRIE are usually a string.
Other methods for generating query strings are possible as well. In
other implementations, the incremental advertisement request 212 is
only the partial query string entered by the user 10.
[0096] Referring back to FIGS. 3A and 3B, the advertisement wrapper
210 may include additional data along with the advertisement
request 212. For example, the advertisement wrapper 210 may include
device location data 218 (e.g., geo-location) that indicates the
location of the user device 200, such as latitude and longitude
coordinates. The user device 200 may include a global positioning
system (GPS) receiver that generates the geo-location data 218
transmitted in the advertisement wrapper 210. The advertisement
wrapper 210 may also include an IP address 228, which the search
module 310 may use to determine the location of the user device
200. In some examples, the advertisement wrapper 210 also includes
additional data, including, but not limited to, platform data 222
(e.g., version of the operating system 224, device type, and
web-browser version), an identity of a user 10 of the user device
200 (e.g., a username), partner specific data, and other data. In
some examples, the advertisement wrapper 210 includes installed
application data that includes applications 204 installed on the
user device 200. In some examples, the advertisement wrapper 210
includes information that the profile generation module 350 used to
update the user profile record 370.
[0097] In some examples, the advertisement system 400 receives an
advertisement request 212 and outputs application state identifiers
(IDs) 332 (or application state records 330) that point to
application states or documents 144 (i.e., RSS documents 144
included in the RSS feeds 142 having near-real time information)
that includes the selected advertisement 431. Each application
state ID 332 uniquely identifies a state of an application 204, and
provides a template or the parameters to uniquely identify one or
more access mechanisms accessing a state of an application (e.g.,
different OS may use different access mechanisms to assess a state
of an application). In some implementations, the application state
IDs 332 include a Uniform Resource Locator (URL) referencing a
functional state of an application 204. In other implementations,
the application state IDs may include another locator having a
different form, e.g., func://exampleapp/param1¶m2, which
includes the parameters (param1 and param2) that are used to
generate the access mechanisms 202.
[0098] Referring back to FIGS. 3A, 3B, 6, 7A and 7B, the
advertisement system 400 receives an advertisement wrapper 210 and
generates personalized/targeted advertisement results 220 based on
data included in a storage system 404 of the advertisement system
400. In some implementations, the advertisement system 400 receives
an advertisement wrapper 210 from the user device 200 and performs
a search for advertisement records 530 in the storage system 404
based on data included in the advertisement wrapper 210, such as
the advertisement request 212.
[0099] The user device 200 may generate user selectable links 234,
236 based on the received advertisement results 220 (e.g., links
234, 236 of FIG. 1). Each user selectable link 234, 236 displayed
to the user 10 may include an access mechanism 202. An application
link 236 allows the user 10 to access the application 204, while an
advertisement link 234 allows the user 10 to access the
advertisement 431 associated with the displayed text (i.e., link
234), using the application 204 associated with the application
link 236. The user 10 may select a user selectable link 234, 236 on
the user device 200 by interacting with the link 234, 236 (e.g.,
touching or clicking the link). In response to selection of the
link 234, 236, the user device 200 may launch a corresponding
software application 204 (e.g., a native application 204a or a
web-browser application 204b) referenced by the access mechanism
202 and perform one or more operations indicated in the access
mechanism 202.
[0100] Access mechanisms 202 may include at least one of a native
application access mechanism 202a (hereinafter "application access
mechanism"), a web access mechanism 202b, and an application
download mechanism 202c. The user device 200 may use the access
mechanisms 202 to access functionality of applications 204. For
example, the user 10 may select a user selectable link 234, 236
including an access mechanism 202 in order to access functionality
of an application 204 indicated in the user selectable link 234,
236. The search module 310 may transmit one or more application
access mechanisms 202a, one or more web access mechanisms 202b, and
one or more application download mechanisms 202c to the user device
200 in the advertisement results 220.
[0101] An application access mechanism 202a may be a string that
includes a reference to a native application 204a and indicates one
or more operations for the user device 200 to perform. If a user 10
selects a user selectable link 234, 236 including an application
access mechanism 202a, the user device 200 may launch the native
application 204a referenced in the application access mechanism
202a and perform the one or more operations indicated in the
application access mechanism 202a.
[0102] An application access mechanism 202a includes data that the
user device 200 can use to access functionality provided by a
native application 204a. For example, an application access
mechanism 202a can include data that causes the user device 200 to
launch a native application 204a and perform a function associated
with the native application 204a. Performance of a function
according to the access mechanism 202 may set the native
application 204a into a specified state. Accordingly, the process
of launching a native application 204a and performing a function
according to an application access mechanism 202a may be referred
to herein as launching the native application 204a and setting the
native application 204a into a state that is specified by the
application access mechanism 202a. In some examples, an application
access mechanism 202a for a restaurant reservation application can
include data that causes the user device 200 to launch the
restaurant reservation application and assist in making a
reservation at a restaurant. In such examples, the restaurant
reservation application may be set in a state that displays
reservation information to the user 10, such as a reservation time,
a description of the restaurant, and user reviews. In additional
examples, an application access mechanism 202a for an internet
media player application can include data that causes the user
device 200 to launch the internet media player application and
stream media from the Internet. In such examples, the internet
media player application may be set in a state that displays
information regarding the media (e.g., music) being streamed, such
as a song name, an artist, or an album name.
[0103] Application access mechanisms 202a may have various
different formats and content. The format and content of an
application access mechanism 202a may depend on the native
application 204a with which the application access mechanism 202 is
associated and the operations that are to be performed by the
native application 204a in response to selection of the application
access mechanism 202a. For example, an application access mechanism
202a for an internet music player application may differ from an
application access mechanism 202a for a shopping application. An
application access mechanism 202a for an internet music player
application may include references to musical artists, songs, and
albums, for example. The application access mechanism 202a for an
internet music player application may also reference operations,
such as randomizing a list of songs and playing a song or album. An
application access mechanism 202a for a shopping application may
include references to different products that are for sale. The
application access mechanism 202a for the shopping application may
also include references to one or more operations, such as adding
products to a shopping cart and proceeding to a checkout.
[0104] FIG. 8 illustrates an example method 800 for receiving
subscription data from a user device 200 and determining if the
subscription tags 376 of a generated user profile record 370 are
known tags 376a or unknown tags 376b. At block 802, the profile
system 300 (FIG. 3) receives subscription data 229 of a user 10
from a user device 200. At block 804, the profile system 300 (i.e.,
data collection module 380) generates one or more subscription tags
376 based on the received subscription data 229 from the user
device 200. At block 806, the collection module 380 updates a user
profile, i.e., profile record 370, with the one or more received
subscription tags 376. At block 808, the collection module 380
determines if any of the subscription tags 376 are unknown
subscription tags 376b. If there are unknown subscription tags
376b, then at block 810 the collection module 380 adds the unknown
tags 376b to a set of `spidering tags` for which the collection
module 380 will crawl and spider the web to collect.
[0105] FIG. 9 is a schematic view illustrating an example method
900 for receiving an advertisement request and generating
advertisements. At block 902, the processing system 402 of the
advertisement system 400 receives an advertisement request from a
user device 200, and at block 904, retrieves a user profile record
370 of the user 10 of the user device 200. The processing system
402 may retrieve the user profile record 370 from the data store
360 using the profile ID 372 of the user 10. The processing system
402, at block 906, identifies subscription tags 376 contained in
the user profile record 370, and at block 908, identifies one or
more advertisement records 430 based on the subscription tags 376.
For example, the advertisement module 410 of the processing system
402 may identify the one or more advertisement records 430 within
the advertisement record data store 420 using the subscription tags
376. Then, at block 910, the processing system 402 generates one or
more advertisements 238 based on the one or more advertisement
records 430 and provides the advertisements 238 to the user device
200.
[0106] Referring to FIGS. 10-11B, in some examples, the user device
200 includes a processing device 203 (also referred to as a
processor) and non-transitory memory 206 in communication with the
processor 203. The user device 200 may include a graphical user
interface (GUI) 240 of an application 204 that includes the
advertisement application 216 running on the user device 200 (e.g.,
executing on the processor 203). The GUI 240 displays a list 231 of
displayed advertisement results 230 (user-selectable links) based
on the advertisement requests 212 from the user device 200. The
processing device 203 executes one or more applications, including
but not limited to an advertisement application 216, native
applications 204, 204a and web browser applications 204, 204b. In
addition, the user device 200 may run an operating system 224 while
executing one or more applications 204, 216.
[0107] The advertisement system 400 may transmit data (e.g.,
advertisement data 232, such as text and/or images), which may be
used by the user device 200 to generate user selectable links 234,
236 from the advertisement results 220. A link 234, 236 may include
text and/or images that the user 10 may select (e.g., touch) via a
user interface 240 displayed on the screen 201 (e.g., a display or
touch screen) of the user device 200. Each user selectable link
234, 236 may be associated with an application access mechanism
202a such that when the user 10 selects a link 234, 236, the user
device 200 launches the native application 204a referenced in the
application access mechanism 202a and performs the one or more
operations indicated in the application access mechanism 202a. The
text and/or images of a link 234, 236 displayed to the user 10 may
indicate the operations that will be performed in response to
selection of the link 234, 236. For example, if the link 234, 236
is to a song in a music playing application, the text and/or images
may identify the music application that will be launched by the
user device 200 and the song that will be played by the music
playing application when the user 10 selects the link 234, 236.
Another example, if the link 234 is to an advertisement 431, the
link 234 will display text associated with the advertisement, and
the link 234 will launch an application 204 that allows the user 10
to view the advertisement.
[0108] The user 10 may select a link 234, 236 to cause the user
device 200 to launch the native application 204a identified in the
link 234, 236 and perform one or more operations according to the
application access mechanism 202a associated with the link 234,
236. Put another way, when the user 10 selects a link 234, 236, the
user device 200 launches a native application 204a and sets the
native application 204a into a state defined by the application
access mechanism 202a associated with the link. In general, a state
of a native application 204a may refer to the operations and/or the
resulting outcome of the native application 204a in response to
selection of a link 234, 236. A state to which the native
application is set may also be referred to herein as an
"application state."
[0109] An application state specified by an application access
mechanism 202a may depend on the functionality provided by the
native application 204a. For example, if a native application 204a
is configured to retrieve and display information from the
Internet, the native application 204a can be set into a state in
which the native application 204a retrieves information from the
Internet and displays information to the user 10. In another
example, if a native application 204a is configured to play media
(e.g., music and/or video) from the Internet, the native
application 204a can be set into a state in which the native
application 204a is playing a song or a movie from the Internet. In
yet another example, if a native application 204a is configured to
make restaurant reservations, the native application 204a can be
set into a state in which the native application 204a displays
available restaurant reservations to the user 10.
[0110] A web access mechanism 202b may include a resource
identifier that includes a reference to a web resource (e.g., a
page of a web application/website). For example, a web access
mechanism 202b may include a uniform resource locator (URL) (i.e.,
a web address) used with hypertext transfer protocol (HTTP). If a
user 10 selects a user selectable link 234, 236 including a web
access mechanism 202b, the user device 200 may launch the web
browser application 204b and retrieve the web resource indicated in
the resource identifier. Put another way, if a user 10 selects a
user selectable link 234, 236 including a web access mechanism
202b, the user device 200 may launch a corresponding web-browser
application 204b and access a state (e.g., a page) of a web
application/website. In some examples, web access mechanisms 202b
include URLs for mobile-optimized sites and/or full sites.
[0111] The web access mechanism 202b included in an application
state record 330 may be used by a web browser to access a web
resource that includes similar information and/or performs similar
functions as would be performed by a native application 204a that
receives an application access mechanism 202a of the application
state record 330. For example, the web access mechanism 202b of an
application state record 330 may direct the web-browser application
204b of the user device 200 to a web version of the native
application 204a referenced in the application access mechanisms
202a of the application state record 330. Moreover, if the
application access mechanisms 202 included in an application state
record 330 for a specific Mexican restaurant cause each application
edition to retrieve information for the specific Mexican
restaurant, the web access mechanism 202b may direct the
web-browser application 204b of the user device 200 to a web page
entry for the specific Mexican restaurant.
[0112] FIGS. 11A-11C illustrate the different types of
advertisement results 220 that may be presented to different users
10 based on the native applications 204a that each user 10 has
installed on his/her user device 200 and the user profile record
370 associated with each user device 200. For example, referring to
FIG. 11A, the user 10 may have two sports news applications 204
(e.g., Sports News A and Sports News B) and a News application
(e.g., "Bay News") installed on the user device 200. When an
advertisement request 212 is triggered, the displayed list 231 of
advertisement results 230 includes displayed results 230, 230a-c,
where each displayed advertisement result 230 includes first and
second user selectable links 234, 236. The advertisement system 400
considers the user profile 370 of the user 10, including the user
subscriptions tags 376 corresponding to an entity tag data 377.
Assuming that the user profile 370 indicates that the user 10 is
located in the San Jose area and that the user 10 is a big fan of
the soccer team `Earthquakes`, the advertisement system 400 may
determine which advertisement 431 is associated with an
advertisement record 530 that includes advertising parameters 538
satisfied by the user profile 370. The advertisement system 400 may
select the advertisement results 220 (i.e., displayed results 230)
relating to the purchase of tickets for a game due to satisfying
the advertising parameters 538 of a ticketing advertisement 431
that sells game tickets. The advertising parameters 538 may include
the user location, the applications downloaded on the user device
200, entity tag data 377 of the user subscription tags 376, or any
other parameters of the user profile record 370 that the advertiser
selects. Thus, the displayed advertisement results 230 include a
first user-selectable link 236 that allows the user 10 to open the
application 204 associated with the advertisement result 220; while
a second user-selectable link 234 provides the user 10 with a link
to the advertisement 431 related to the application 204 associated
with the advertisement result 220.
[0113] As shown in the example, the first displayed advertisement
230a provides a first application link 236a to the `Sports News A`
application and a second content link 234a that provides the user
10 with an advertisement link to purchase tickets for an upcoming
game. The second displayed advertisement 230b includes a first
application link 236b to the `Sports News B` application, and a
second content link 234b that provides the user 10 with a different
ticketing service for the Earthquakes Game. The third displayed
advertisement 230c includes a first application link 236c to the
`Bay News` application, and a second content link 234c that
provides the user 10 with an article in the Bay News about the
Earthquakes team (in this case that the Earthquakes team is trading
a starting player), which may be an advertisement article 431. The
second user-selectable links 234 are associated with applications
previously installed on the user device 200. In other words, the
advertisement module 410 may be restricted to providing
advertisements associated with applications 204 previously
installed on the user device 200.
[0114] In the example shown in FIG. 11B, the user 10 has BookReader
application(s) 204 and a news application 204 installed on the user
device 200. The system 100 may have previously collected content
feeds (e.g., feed documents 144) from the BookReader application
that are for a book called "Earthquakes Soccer History" and "Soccer
History" and the system 100 may have collected from the Bay News
application an article (e.g., a document 144) about the Earthquakes
soccer team in San Jose. In this example, the displayed
advertisement results 230 include three displayed advertisement
results 230. A first displayed advertisement result 230a includes a
first application link 236a to the BookReader application, while a
second content link 234a provides the user 10 with a link to
purchase a copy of the book Earthquake Soccer History. The second
displayed advertisement result 230b includes a first application
link 236a to the BookReader application 204, and a second content
link 234b provides the user 10 with a link to download a copy of
Soccer History on BookReader. The third displayed result 230c
includes a first application link 236c to the `Bay News`
application, and a second content link 234c that provides the user
10 with an article in the Bay News about the Earthquakes team (in
this case that the Earthquakes team is trading a starting player).
In this example, the advertisement results 230 relate to soccer,
because the user profile 370, including its subscription tags 376
and respective entity tag data 377, indicate that the user 10 is a
soccer fan, and therefore the advertisement 431 selection relate to
soccer (in addition to satisfying the advertisement parameters
538).
[0115] FIG. 12 illustrates a method 1200 for personalizing deep
search results using subscription data 534. At block 1202, the
method 1200 includes receiving, at the computing device, one or
more user permissions to access one or more applications 204
installed on a user device 200. At block 1204, the method 1200
includes generating, at the computing device, a user profile record
370 associated with the user device 200. The user profile record
370 includes user profile data including a device location 218,
device data defining at least one of a device operating system 224,
and a list of applications 204 installed on the user device 200.
The user profile record 370 further includes subscription tags 376
defining one or more user subscriptions to application access
mechanisms 202. At block 1206, the method 1200 further includes
receiving, at the computing device from the user device 200, usage
data of one or more applications 204 installed on the user device
200. At block 1208, the method 1200 includes receiving, at the
computing device from the user device 200, an advertising request
including an application state. At block 1210, the method 1200
includes identifying, at the computing device, one or more
advertisements 238 based on the subscription tags 376.
[0116] In some implementations, the method 1200 includes
transmitting to the user device 200 an identified advertisement 431
in response to a user selection of a subscription tag 376. Each
advertisement 431 may define advertisement parameters 538 including
one or more of access mechanisms 202, advertisement subscription
534, and/or keyword parameters 582. The method 1200 may further
include transmitting to the user device 200 an identified
advertisement 431 when a user subscription tags 376 and the
advertisement subscriptions 534 have a threshold similarity
value.
[0117] FIG. 13 illustrates a second method 1300 for personalizing
advertisements using subscription data. At block 1302, the method
1300 includes receiving, at a computing device (e.g., advertisement
system 500), usage data (e.g., subscription data 229 and device
data that is used to generate the user profile record 370) of a
user 10. At block 1304, the method 1300 includes and receiving
advertisement parameters 538 for one or more advertisements 431.
The usage data includes device usage data (e.g., user profile data
374) associated with a user device 200 of the corresponding user 10
and subscription usage data (e.g., subscription tags 376)
associated with one or more applications 204 installed on the user
device 200. At block 1306, the method 1300 includes determining
whether any of the advertisement parameters 538 are satisfied by
the usage data (or the profile record 370) of the user 10. When an
advertisement parameter 580 is satisfied by the usage data of the
user 10, at block 1308, the method 1300 includes outputting, to the
user device 200 of the user 10, the advertisement 431 (e.g., an
advertisement result 220) corresponding to the satisfied
advertisement parameter.
[0118] In some implementations, the method 1300 includes receiving
an advertisement request 212 from the user device 200 for an
advertisement. The advertisement request 212 is sent from the user
device 200 based on a trigger from a software application executing
on the user device 200.
[0119] FIG. 14 illustrates a method 1400 for receiving personalized
advertisement search results. At block 1402, the method includes
sending, from a user device 200 to an advertisement system 500,
usage data of a user 10. The usage data includes device usage data
(e.g., user profile data 374) associated with the user device 200
and subscription usage data (e.g., subscription tags 376)
associated with one or more applications installed on the user
device 200. The subscription usage data 376 defines one or more
subscription content feeds 376. Each subscription content feed 376
is associated with an application installed on the user device. At
block 1404, the method 1404 further includes sending an
advertisement request 212 from the user device 200 to the
advertisement system 400. At block 1406, the method 1400 includes
receiving one or more advertisements results 220 each associated
with an advertisement 431, transmitted from the advertisement
system 400. Each advertisement 431 includes advertisement data 232
and an advertisement access mechanism 202 that has a reference to a
corresponding application installed on the user device 200. The
advertisement access mechanism indicates a performable operation
for the corresponding application relating to the advertisement
431. The advertisement 431 has one or more advertisement parameters
538 that are satisfied by the usage data of the user 10. At block
1408, the method 1400 further includes displaying, on a display 201
in communication with the user device 200, a graphical user
interface 240 including the one or more advertisements 431 as
displayed advertisement results 230. Each advertisement includes a
user selectable link 234 associated with the corresponding
advertisement access mechanism 202. In some examples, the
advertisement request 212 sent from the user device 200 is based on
a trigger from a software application executing on the user device
200.
[0120] Referring back to FIGS. 13 and 14, in some examples, the
device usage data may include at least one of a device location
374b, a device operating system 374c, or a list of the one or more
applications 374d installed on the corresponding user device 200.
The subscription data 376 may include one or more subscription tags
376, 376a, 376b to content access mechanisms. Each subscription tag
376 is associated with one of the one or more applications
installed on the user device 200. Each subscription tag associated
with one or more entities and/or categories 377.
[0121] In some examples, the advertising parameters 538 of an
advertisement are associated with one or more entities and/or
categories 501. An entity 501 may include a person, a location, a
business, a product, a service, a media content, or a destination.
A category may include at least one of a book category, a business
category, an education category, an entertainment category, a food
and dining category, a games category, a health and fitness
category, a lifestyle category, a music and videos category, a news
category, a weather category, a photo category, a productivity
category, a social media category, or a sports category. Each
advertisement 431 (e.g., advertisement result 220 sent to the user
device 200) may include advertisement data 232 and an advertisement
access mechanism 202 having a reference to a corresponding
application installed on the user device 200 The advertisement
access mechanism indicates 202 a performable operation for the
corresponding application relating to the advertisement 431.
[0122] FIG. 15 is a schematic view of an example computing device
1500 that may be used to implement the systems and methods
described in this document. The computing device 1500 is intended
to represent various forms of digital computers, such as laptops,
desktops, workstations, personal digital assistants, servers, blade
servers, mainframes, and other appropriate computers. The
components shown here, their connections and relationships, and
their functions, are meant to be exemplary only, and are not meant
to limit implementations of the disclosure described and/or claimed
in this document.
[0123] The computing device 1500 (e.g., the advertisement
application 216, the user device 200, the profile system 300, or
the advertisement system 400) includes a processor 112, 203, 302,
1510, memory 1520, a storage device 114, 206, 304, 1530, a
high-speed interface/controller 1540 connecting to the memory 1520
and high-speed expansion ports 1550, and a low speed
interface/controller 1560 connecting to low speed bus 1570 and
storage device 1530. Each of the components 1510, 1520, 1530, 1540,
1550, and 1560, are interconnected using various busses, and may be
mounted on a common motherboard or in other manners as appropriate.
The processor 1510 can process instructions for execution within
the computing device 1500, including instructions stored in the
memory 1520 or on the storage device 1530 to display graphical
information for a graphical user interface (GUI) on an external
input/output device, such as display 1580 coupled to high speed
interface 1540. In other implementations, multiple processors
and/or multiple buses may be used, as appropriate, along with
multiple memories and types of memory. Also, multiple computing
devices 1500 may be connected, with each device providing portions
of the necessary operations (e.g., as a server bank, a group of
blade servers, or a multi-processor system).
[0124] The memory 1520 stores information non-transitorily within
the computing device 1500. The memory 1520 may be a
computer-readable medium, a volatile memory unit(s), or
non-volatile memory unit(s). The memory hardware 1520 may be
physical devices used to store programs (e.g., sequences of
instructions) or data (e.g., program state information) on a
temporary or permanent basis for use by the computing device 1500.
Examples of non-volatile memory include, but are not limited to,
flash memory and read-only memory (ROM)/programmable read-only
memory (PROM)/erasable programmable read-only memory
(EPROM)/electronically erasable programmable read-only memory
(EEPROM) (e.g., typically used for firmware, such as boot programs)
as well as disks or tapes. Examples of volatile memory include, but
are not limited to, random access memory (RAM), dynamic random
access memory (DRAM), static random access memory (SRAM), phase
change memory (PCM).
[0125] The storage device 1530 is capable of providing mass storage
for the computing device 1500. In some implementations, the storage
device 1530 is a computer-readable medium. In various different
implementations, the storage device 1530 may be a floppy disk
device, a hard disk device, an optical disk device, or a tape
device, a flash memory or other similar solid state memory device,
or an array of devices, including devices in a storage area network
or other configurations. In additional implementations, a computer
program product is tangibly embodied in an information carrier. The
computer program product contains instructions that, when executed,
perform one or more methods, such as those described above. The
information carrier is a computer- or machine-readable medium, such
as the memory 1520, the storage device 1530, or memory on processor
1510.
[0126] The high speed controller 1540 manages bandwidth-intensive
operations for the computing device 1500, while the low speed
controller 1560 manages lower bandwidth-intensive operations. Such
allocation of duties is exemplary only. In some implementations,
the high-speed controller 1540 is coupled to the memory 1520, the
display 1580 (e.g., through a graphics processor or accelerator),
and to the high-speed expansion ports 1550, which may accept
various expansion cards (not shown). In some implementations, the
low-speed controller 1560 is coupled to the storage device 1530 and
low-speed expansion port 1570. The low-speed expansion port 1570,
which may include various communication ports (e.g., USB,
Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or
more input/output devices, such as a keyboard, a pointing device, a
scanner, or a networking device, such as a switch or router, e.g.,
through a network adapter.
[0127] The computing device 1500 may be implemented in a number of
different forms, as shown in the figure. For example, it may be
implemented as a standard server 1500a or multiple times in a group
of such servers 1500a, as a laptop computer 1500b, or as part of a
rack server system 1500c.
[0128] Various implementations of the systems and techniques
described here can be realized in digital electronic and/or optical
circuitry, integrated circuitry, specially designed ASICs
(application specific integrated circuits), computer hardware,
firmware, software, and/or combinations thereof. These various
implementations can include implementation in one or more computer
programs that are executable and/or interpretable on a programmable
system including at least one programmable processor, which may be
special or general purpose, coupled to receive data and
instructions from, and to transmit data and instructions to, a
storage system, at least one input device, and at least one output
device.
[0129] These computer programs (also known as programs, software,
software applications or code) include machine instructions for a
programmable processor, and can be implemented in a high-level
procedural and/or object-oriented programming language, and/or in
assembly/machine language. As used herein, the terms
"machine-readable medium" and "computer-readable medium" refer to
any computer program product, non-transitory computer readable
medium, apparatus and/or device (e.g., magnetic discs, optical
disks, memory, Programmable Logic Devices (PLDs)) used to provide
machine instructions and/or data to a programmable processor,
including a machine-readable medium that receives machine
instructions as a machine-readable signal. The term
"machine-readable signal" refers to any signal used to provide
machine instructions and/or data to a programmable processor.
[0130] Implementations of the subject matter and the functional
operations described in this specification can be implemented in
digital electronic circuitry, or in computer software, firmware, or
hardware, including the structures disclosed in this specification
and their structural equivalents, or in combinations of one or more
of them. Moreover, subject matter described in this specification
can be implemented as one or more computer program products, i.e.,
one or more modules of computer program instructions encoded on a
computer readable medium for execution by, or to control the
operation of, data processing apparatus. The computer readable
medium can be a machine-readable storage device, a machine-readable
storage substrate, a memory device, a composition of matter
effecting a machine-readable propagated signal, or a combination of
one or more of them. The terms "data processing apparatus",
"computing device" and "computing processor" encompass all
apparatus, devices, and machines for processing data, including by
way of example a programmable processor, a computer, or multiple
processors or computers. The apparatus can include, in addition to
hardware, code that creates an execution environment for the
computer program in question, e.g., code that constitutes processor
firmware, a protocol stack, a database management system, an
operating system, or a combination of one or more of them. A
propagated signal is an artificially generated signal, e.g., a
machine-generated electrical, optical, or electromagnetic signal
that is generated to encode information for transmission to
suitable receiver apparatus.
[0131] A computer program (also known as an application, program,
software, software application, script, or code) can be written in
any form of programming language, including compiled or interpreted
languages, and it can be deployed in any form, including as a
stand-alone program or as a module, component, subroutine, or other
unit suitable for use in a computing environment. A computer
program does not necessarily correspond to a file in a file system.
A program can be stored in a portion of a file that holds other
programs or data (e.g., one or more scripts stored in a markup
language document), in a single file dedicated to the program in
question, or in multiple coordinated files (e.g., files that store
one or more modules, sub programs, or portions of code). A computer
program can be deployed to be executed on one computer or on
multiple computers that are located at one site or distributed
across multiple sites and interconnected by a communication
network.
[0132] The processes and logic flows described in this
specification can be performed by one or more programmable
processors executing one or more computer programs to perform
functions by operating on input data and generating output. The
processes and logic flows can also be performed by, and apparatus
can also be implemented as, special purpose logic circuitry, e.g.,
an FPGA (field programmable gate array) or an ASIC (application
specific integrated circuit).
[0133] Processors suitable for the execution of a computer program
include, by way of example, both general and special purpose
microprocessors, and any one or more processors of any kind of
digital computer. Generally, a processor will receive instructions
and data from a read only memory or a random access memory or both.
The essential elements of a computer are a processor for performing
instructions and one or more memory devices for storing
instructions and data. Generally, a computer will also include, or
be operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g.,
magnetic, magneto optical disks, or optical disks. However, a
computer need not have such devices. Moreover, a computer can be
embedded in another device, e.g., a mobile telephone, a personal
digital assistant (PDA), a mobile audio player, a Global
Positioning System (GPS) receiver, to name just a few. Computer
readable media suitable for storing computer program instructions
and data include all forms of non-volatile memory, media and memory
devices, including by way of example semiconductor memory devices,
e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,
e.g., internal hard disks or removable disks; magneto optical
disks; and CD ROM and DVD-ROM disks. The processor and the memory
can be supplemented by, or incorporated in, special purpose logic
circuitry.
[0134] To provide for interaction with a user, one or more aspects
of the disclosure can be implemented on a computer having a display
device, e.g., a CRT (cathode ray tube), LCD (liquid crystal
display) monitor, or touch screen for displaying information to the
user and optionally a keyboard and a pointing device, e.g., a mouse
or a trackball, by which the user can provide input to the
computer. Other kinds of devices can be used to provide interaction
with a user as well; for example, feedback provided to the user can
be any form of sensory feedback, e.g., visual feedback, auditory
feedback, or tactile feedback; and input from the user can be
received in any form, including acoustic, speech, or tactile input.
In addition, a computer can interact with a user by sending
documents to and receiving documents from a device that is used by
the user; for example, by sending web pages to a web browser on a
user's client device in response to requests received from the web
browser.
[0135] One or more aspects of the disclosure can be implemented in
a computing system that includes a backend component, e.g., as a
data server, or that includes a middleware component, e.g., an
application server, or that includes a frontend component, e.g., a
client computer having a graphical user interface or a Web browser
through which a user can interact with an implementation of the
subject matter described in this specification, or any combination
of one or more such backend, middleware, or frontend components.
The components of the system can be interconnected by any form or
medium of digital data communication, e.g., a communication
network. Examples of communication networks include a local area
network ("LAN") and a wide area network ("WAN"), an inter-network
(e.g., the Internet), and peer-to-peer networks (e.g., ad hoc
peer-to-peer networks).
[0136] The computing system can include clients and servers. A
client and server are generally remote from each other and
typically interact through a communication network. The
relationship of client and server arises by virtue of computer
programs running on the respective computers and having a
client-server relationship to each other. In some implementations,
a server transmits data (e.g., an HTML page) to a client device
(e.g., for purposes of displaying data to and receiving user input
from a user interacting with the client device). Data generated at
the client device (e.g., a result of the user interaction) can be
received from the client device at the server.
[0137] While this specification contains many specifics, these
should not be construed as limitations on the scope of the
disclosure or of what may be claimed, but rather as descriptions of
features specific to particular implementations of the disclosure.
Certain features that are described in this specification in the
context of separate implementations can also be implemented in
combination in a single implementation. Conversely, various
features that are described in the context of a single
implementation can also be implemented in multiple implementations
separately or in any suitable sub-combination. Moreover, although
features may be described above as acting in certain combinations
and even initially claimed as such, one or more features from a
claimed combination can in some cases be excised from the
combination, and the claimed combination may be directed to a
sub-combination or variation of a sub-combination.
[0138] Similarly, while operations are depicted in the drawings in
a particular order, this should not be understood as requiring that
such operations be performed in the particular order shown or in
sequential order, or that all illustrated operations be performed,
to achieve desirable results. In certain circumstances,
multi-tasking and parallel processing may be advantageous.
Moreover, the separation of various system components in the
embodiments described above should not be understood as requiring
such separation in all embodiments, and it should be understood
that the described program components and systems can generally be
integrated together in a single software product or packaged into
multiple software products.
[0139] A number of implementations have been described.
Nevertheless, it will be understood that various modifications may
be made without departing from the spirit and scope of the
disclosure. Accordingly, other implementations are within the scope
of the following claims. For example, the actions recited in the
claims can be performed in a different order and still achieve
desirable results.
* * * * *
References