Prioritized placement of content elements for iTV application
10491942 ยท 2019-11-26
Assignee
Inventors
- David de Andrade (San Anselmo, CA)
- John Carney (Sausalito, CA)
- Samuel Moreau (Bellevue, WA, US)
- Tyson Singer (San Anselmo, CA, US)
- Srikanth Ganapavarapu (San Leandro, CA, US)
Cpc classification
H04N21/26241
ELECTRICITY
H04N21/84
ELECTRICITY
H04N21/8543
ELECTRICITY
H04N21/4316
ELECTRICITY
H04N21/2668
ELECTRICITY
H04N21/262
ELECTRICITY
H04N5/45
ELECTRICITY
H04N21/47202
ELECTRICITY
H04N21/4725
ELECTRICITY
International classification
H04N21/431
ELECTRICITY
H04N21/258
ELECTRICITY
H04N21/262
ELECTRICITY
H04N21/2668
ELECTRICITY
H04N21/4725
ELECTRICITY
H04N21/472
ELECTRICITY
H04N5/45
ELECTRICITY
H04N21/84
ELECTRICITY
H04N21/8543
ELECTRICITY
Abstract
Preferred placement of programming content is provided by a system and method to organize or sequence the display of a set of programmable content elements of an iTV application to a viewer, using business rules that describe the preferred placement conditions or criteria. Such criteria include brand, content owner, application location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current iTV application, current content type, and/or subscriber and set-top box profile and behavior data. In one implementation, the present invention allows for managing the shelf space within and for iTV applications.
Claims
1. A system comprising: a first computing device and a second computing device; wherein the first computing device comprises: one or more first processors; and first memory storing first executable instructions that, when executed by the one or more first processors, cause the first computing device to: access content placement rules that (a) define conditions for placement of content elements at defined user-selectable locations along multiple dimensions within a user interface and (b) prioritize placement of one of the content elements at one of the defined user-selectable locations relative to placement of other content elements at other ones of the defined user-selectable locations, place, at one or more of the defined user-selectable locations, one or more of the content elements based on a reference to a definition of a programming campaign, wherein the definition of the programming campaign comprises a key for uniquely identifying the programming campaign, a listing of candidate content elements, and at least one rule for selecting the one or more of the content elements from the candidate content elements, and send, to the second computing device, the user interface, wherein the user interface comprises the one or more of the content elements placed at the one or more of the defined user-selectable locations; and wherein the second computing device comprises: one or more second processors; and second memory storing second executable instructions that, when executed by the one or more second processors, cause the second computing device to: receive, from the first computing device, the user interface, and output, for display, the user interface.
2. The system of claim 1, wherein the content placement rules comprise one or more first rules for controlling placement of one or more tiles within a tiled user interface, one or more second rules for permitting groupings of the one or more tiles within the tiled user interface, and one or more third rules for permitting transitions between the groupings of the one or more tiles within the tiled user interface.
3. The system of claim 1, wherein the placing of the one or more of the content elements is further based on parameters, associated with the content placement rules, that comprise one or more of: current application, application type, location, current channel, current network family, current channel category, current program, current program genre, current program attributes, or current content type.
4. The system of claim 1, wherein the placing of the one or more of the content elements is further based on one or more of: demographics, service tier, geography, or viewer behavior.
5. The system of claim 1, wherein the content placement rules prioritize the placement of each of the content elements based on pay-for-placement criteria.
6. The system of claim 1, wherein the content placement rules prioritize the placement of each of the content elements based on one or more of: brand, content owner, application, location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current application, current content type, or viewer behavior data.
7. The system of claim 1, wherein the defined user-selectable locations comprise tiles reserved for advertisements.
8. The system of claim 1, wherein the conditions for placement of the content elements within the user interface comprise time shifting so as to present different elements within the defined user-selectable locations based on a time of day.
9. The system of claim 1, wherein the one or more of the content elements placed at the one or more of the defined user-selectable locations comprise one or more linear content elements and one or more on-demand content elements.
10. One or more non-transitory computer-readable media storing executable instructions that, when executed, cause an apparatus to: access content placement rules that (a) define conditions for placement of content elements at defined user-selectable locations along multiple dimensions within a user interface and (b) prioritize placement of one of the content elements at one of the defined user-selectable locations relative to placement of other content elements at other ones of the defined user-selectable locations; place, at one or more of the defined user-selectable locations, one or more of the content elements based on a reference to a definition of a programming campaign that includes a key for uniquely identifying the programming campaign, a listing of candidate content elements, and at least one rule for selecting the one or more of the content elements from the candidate content elements; and cause display of the user interface, wherein the user interface comprises the one or more of the content elements placed at the one or more of the defined user-selectable locations.
11. The one or more non-transitory computer-readable media of claim 10, wherein the content placement rules comprise one or more first rules for controlling placement of one or more tiles within a tiled user interface, one or more second rules for permitting groupings of the one or more tiles within the tiled user interface, and one or more third rules for permitting transitions between the groupings of the one or more tiles within the tiled user interface.
12. The one or more non-transitory computer-readable media of claim 10, wherein the placing of the one or more of the content elements is further based on parameters, associated with the content placement rules, that comprise one or more of: current application, application type, location, current channel, current network family, current channel category, current program, current program genre, current program attributes, or current content type.
13. The one or more non-transitory computer-readable media of claim 10, wherein the placing of the one or more of the content elements is further based on one or more of: demographics, service tier, geography, or viewer behavior.
14. The one or more non-transitory computer-readable media of claim 10, wherein the content placement rules prioritize the placement of each of the content elements based on pay-for-placement criteria.
15. The one or more non-transitory computer-readable media of claim 10, wherein the content placement rules prioritize the placement of each of the content elements based on one or more of: brand, content owner, application, location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current application, current content type, or viewer behavior data.
16. The one or more non-transitory computer-readable media of claim 10, wherein the defined user-selectable locations comprise tiles reserved for advertisements.
17. The one or more non-transitory computer-readable media of claim 10, wherein the conditions for placement of the content elements within the user interface comprise time shifting so as to present different elements within the defined user-selectable locations based on a time of day.
18. The one or more non-transitory computer-readable media of claim 10, wherein the one or more of the content elements placed at the one or more of the defined user-selectable locations comprise one or more linear content elements and one or more on-demand content elements.
19. A system comprising: a first computing device and a second computing device; wherein the first computing device comprises: one or more first processors; and first memory storing first executable instructions that, when executed by the one or more first processors, cause the first computing device to: access content placement rules that (a) define conditions for placement of content elements at defined locations along multiple dimensions within a content listing user interface and (b) prioritize placement of one of the content elements at one of the defined locations relative to placement of other content elements at other ones of the defined locations, place, at one or more of the defined locations, one or more of the content elements based on a reference to a definition of a programming campaign, wherein the definition of the programming campaign comprises a key for uniquely identifying the programming campaign, a listing of candidate content elements, and at least one rule for selecting the one or more of the content elements from the candidate content elements, and send, to the second computing device, the user interface, wherein the user interface comprises the one or more of the content elements placed at the one or more of the defined locations; and wherein the second computing device comprises: one or more second processors; and second memory storing second executable instructions that, when executed by the one or more second processors, cause the second computing device to: receive, from the first computing device, the user interface, and output, for display, the user interface.
20. The system of claim 19, wherein the content placement rules comprise one or more first rules for controlling placement of one or more tiles within a tiled user interface, one or more second rules for permitting groupings of the one or more tiles within the tiled user interface, and one or more third rules for permitting transitions between the groupings of the one or more tiles within the tiled user interface.
21. The system of claim 19, wherein the placing of the one or more of the content elements is further based on parameters, associated with the content placement rules, that comprise one or more of: current application, application type, location, current channel, current network family, current channel category, current program, current program genre, current program attributes, or current content type.
22. The system of claim 19, wherein the placing of the one or more of the content elements is further based on one or more of: demographics, service tier, geography, or viewer behavior.
23. The system of claim 19, wherein the content placement rules prioritize the placement of each of the content elements based on pay-for-placement criteria.
24. The system of claim 19, wherein the content placement rules prioritize the placement of each of the content elements based on one or more of: brand, content owner, application, location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current application, current content type, or viewer behavior data.
25. The system of claim 19, wherein the defined locations comprise tiles reserved for advertisements.
26. The system of claim 19, wherein the conditions for placement of the content elements within the user interface comprise time shifting so as to present different elements within the defined locations based on a time of day.
27. The system of claim 19, wherein the one or more of the content elements placed at the one or more of the defined locations comprise one or more linear content elements and one or more on-demand content elements.
28. A system comprising: a first computing device and a second computing device; wherein the first computing device comprises: one or more first processors; and first memory storing first executable instructions that, when executed by the one or more first processors, cause the first computing device to: access content placement rules that (a) describe conditions for placement of content elements within a user interface of an interactive television (iTV) application at defined locations along multiple dimensions and (b) prioritize placement of one of the content elements at one of the defined locations relative to placement of other content elements at other ones of the defined locations, place, at one or more of the defined locations, one or more of the content elements based on a reference to a definition of a programming campaign, wherein the definition of the programming campaign comprises a key for uniquely identifying the programming campaign, a listing of candidate content elements, and at least one rule for selecting the one or more of the content elements from the candidate content elements, and send, to the second computing device, the user interface, wherein the user interface comprises the one or more of the content elements placed at the one or more of the defined locations; and wherein the second computing device comprises: one or more second processors; and second memory storing second executable instructions that, when executed by the one or more second processors, cause the second computing device to: receive, from the first computing device, the user interface, and output, for display, the user interface.
29. The system of claim 28, wherein the content placement rules comprise one or more first rules for controlling placement of one or more tiles within a tiled user interface, one or more second rules for permitting groupings of the one or more tiles within the tiled user interface, and one or more third rules for permitting transitions between the groupings of the one or more tiles within the tiled user interface.
30. The system of claim 28, wherein the placing of the one or more of the content elements is further based on parameters, associated with the content placement rules, that comprise one or more of: current application, application type, location, current channel, current network family, current channel category, current program, current program genre, current program attributes, or current content type.
31. The system of claim 28, wherein the placing of the one or more of the content elements is further based on one or more of: demographics, service tier, geography, or viewer behavior.
32. The system of claim 28, wherein the content placement rules prioritize the placement of each of the content elements based on pay-for-placement criteria.
33. The system of claim 28, wherein the content placement rules prioritize the placement of each of the content elements based on one or more of: brand, content owner, application, location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current application, current content type, or viewer behavior data.
34. The system of claim 28, wherein the defined locations comprise tiles reserved for advertisements.
35. The system of claim 28, wherein the conditions for placement of the content elements within the user interface comprise time shifting so as to present different elements within the defined locations based on a time of day.
36. The system of claim 28, wherein the one or more of the content elements placed at the one or more of the defined locations comprise one or more linear content elements and one or more on-demand content elements.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
DETAILED DESCRIPTION
(4) Described herein are methods and systems for providing preferred placement of programming content within an iTV system. Various embodiments of the present invention provide for organizing or sequencing the display of a set of programmable content elements to a viewer using business rules that describe preferred placement conditions or criteria. Such criteria may include some or all of: brand, content owner, application location, current channel, current channel family, current channel category, time of day, content category, current program, current program genre, current iTV application, current content type, and/or subscriber and set-top box profile and behavior data. In one implementation, the present invention allows for managing the shelf space within and for iTV applications.
(5) Within the present system, a server component presents a view of the programmable opportunities for automated control and management of individual programming opportunities or groups of programming opportunities. These programming opportunities can take the shape of lists, positioning within lists, groups of tiles, positioning of graphical elements, elements of a content ticker, or other representation methods for a multiplicity of content elements related via a programmed display or interaction sequence. The system operator (MSO), network programmer or content application owner may control different sets of these programmable opportunities. A single screen (e.g., for presentation to a television viewer) may display one or more groups of programmable opportunities.
(6) The above-cited U.S. patent application Ser. No. 10/390,064 (the '064 application) describes a framework for iTV applications that accommodates a system and method for management and delivery of programmable content, that may include advertising, promotions, content placement packages and/or programming campaign definitions, so as to permit a selection of a specific advertisement, promotion or content at a time of preparation of the iTV content by the server component, and/or a time of execution of the iTV applications by the client component. In the framework described in the '064 application, the iTV applications are tagged in a manner such that the iTV applications present all placement opportunities across all applications as a set of programmable opportunities. In this regard, a programmable opportunity can be any location or set of locations within the iTV applications where content may be placed, said content including advertisements, promotions, data including text, images, links to other applications, and/or audio/video delivered over broadcast or narrowcast, displayed in scaled inset or overlay form. The iTV applications are configured to respond in a subscriber-specific manner to user interactions with the iTV applications.
(7) The selection or programming of content may be made according to one or more business rules, which may include rules for placing and/or automating product offerings, promotions, advertising campaigns, VOD, broadcast-on-demand, transactional opportunities, and/or other types of content across disparate television services. The rules for placing and/or automating product offerings across disparate iTV applications may accommodate multiple selection criteria, for example: location, current channel, current channel family, current channel category, time of day, offering category, current program, current program genre, current iTV application, current content type, and subscriber profile. Further, the business rules may accommodate subscriber-specific rules according to a subscriber profile associated with a particular one of the client devices upon which the client component is resident. The business rules may be selected at any of the following instances: dynamically at the time of execution of the iTV applications, or at the time of application creation.
(8) The above-cited U.S. patent application Ser. No. 10/247,901 (the '901 application) describes the concept of preferred placement in the context of a user interface for interactive television services in which the content pieces, advertising and promotions can be organized according to configurable business rules to dynamically control the content and preferred placement of elements of content, including tiles, within displayed categories. These business rules can be configured according to time of day, television channel, channel content, preferred placement, viewer demographic, viewer behavior, navigation context and/or content category.
(9) The above-cited U.S. patent application Ser. No. 10/460,950 (the '950 application) describes user interfaces for preferred placement that allow for the programming of tiles of ads, promotions or other content in a manner that permits the control of individual tiles and groups of tiles along multiple dimensions. These placement opportunities may be controlled in the many ways described above, and also may be presented to viewers in multiple forms of iTV user interfaces through the common programming mechanisms.
(10) Thus, the above-cited patent applications demonstrate aspects of a system that provides for controlling programming of content within an iTV system. In the present invention these elements are combined to provide a system and method that provides for programming content from the business perspective of pay for placement or shelf space within a framework of iTV applications.
(11)
(12) A programming campaign specifies the programming of a content element and consists of four main components:
(13) 1. A campaign key that uniquely identifies the campaign.
(14) 2. A list of candidates each providing a set of programmed values for the element attributes.
(15) 3. A qualifying predicate for each candidate, that consists of a generalized set of conditions.
(16) 4. A display rule, such as sequential, random or weighted, to select one candidate among those that qualify.
(17) A programmable element is identified by the presence of a special resource key attribute that references a programming campaign; for example, via a lookup using the resource key as an index into a location list that provides the current campaign ID to use for programming the element. The application client (AC) 24 on set-top box 22 executes the campaign definition. This execution results in the selection of a qualifying candidate (e.g., by determining the truth value of the programming conditions). The selected candidate provides a resolution of one or more of the attributes and data of the programmable element, some of which may be newly specified, and some updated (e.g., from default values provided by the template and data package).
(18) The above-described concept of programming by dynamic execution of rules is available as a mechanism to resolve properties of any content element. Wherever possible, triggering of rules execution is given the following preferential treatment (in order):
(19) 1. On AS 14 during construction of the broadcast content.
(20) 2. On AC 24 for the remaining rules where possible.
(21) 3. On AS 14 using a 2-way return path (back channel) request where required.
(22) As further described in the above-cited patent applications, AS 14 includes a programming manager that allows a network operator, programmer or content producer to specify the elements of advertising, promotional opportunities, VOD placement, image and text placement, subscriber targeting, service and application provisioning, interactive user responses and other programming elements in the service. It allows the administrator to specify the condition predicates and dynamic associative lookups and business rules that constitute service programming.
(23) Turning now to
(24) As shown in the illustration, the business rules themselves may, in one embodiment, comprise rules associated with various data categories 28, which include:
(25) 1 Advertising and promotional rules.
(26) 2 TV channel association rules.
(27) 3 Timing rules (e.g., for rotation of content, ads and promotions).
(28) 4 Category placement rules.
(29) 5 Preferred placement rules.
(30) 6 VOD metadata rules.
(31) 7 Self provisioning rules.
(32) The business rules component 26 receives the business rules, interprets them, and provides instructions that will eventually be applied to layout and display objects. The business rules component 26 determines what interface elements 30 (e.g., data, images, ads, menu choices, etc.) are shown and when, and in what order and sequence those elements should be displayed. In one embodiment this may include displaying an advertisement for a sports product when the viewer is tuned to a sports channel. In another embodiment this may include providing links to a specific video when a user tuned a specific channel at a specific time.
(33) By way of illustration only, and without limitation, the XML, example provided in '064 application provides for location definition and preferred placement within programming campaign definitions:
(34) TABLE-US-00001 <?xml version=1.0 encoding=UTF-8?> <meta-business-rules> <!-- location list identifies the campaign --> <location-list start=938129 end=948128> <location> <resource key=2/> <campaign-schedule id=1_176_80> <interval start=938129 end=948128/> </campaign-schedule> </location> </location-list> <?xml version=1.0 encoding=UTF-8?> <!--programming campaign resolves the element attributes and data --> <campaign-list start=938129 end=948128> <campaign id=1_176_80 displayrule=2> <element id=1_176_81 type=1 displayruledata=1 onclick=vod(10100011) src=img24135.ast default=true> <condition> <equal name=package value=bronze/> </condition> <condition> <equal name=package value=silver/> <equal name=hbo value=no/> </condition> </element> <element id=1_176_82 type=1 displayruledata=2 onclick=vod(10100012) src=img24138.ast > <condition> <equal name=package value=platinum/> </condition> <condition> <equal name=package value=silver/> <equal name=hbo value=yes/> </condition> </element> </campaign> </campaign-list> </meta-business-rules>
(35) In this example, the displayrule attribute indicates a preferred placement rule or sequence is to be applied, and the displayruledata attribute provides the sequence data for the business rules component 26 to apply the ordering for content in the presentation user interface.
(36) As another example, and without limitation, the XML, example provided below illustrates another implementation of the business rules for preferred placement within programming campaign definition:
(37) TABLE-US-00002 <?xml version=1.0 encoding=UTF-8?> <!-- This is generated on per Application basis --> <programming> <!-- programming based on location --> <ruleSetList> <!-- A ruleSet identifies a location in the application, i.e. a group of identical programmable elements --> <ruleSet location=111 default=211 displayRule=firstFound> <rule id=311> <conditionRef id=1/> <actionRef id=11/> </rule> <rule id=312> <conditionRef id=2/> <actionRef id=12/> </rule> <!-- the rule with id marked by default attribute in the enclosing ruleSet --> <rule id=211> <actionRef id=21/> </rule> </ruleSet> <ruleSet location=112 default=212 displayRule=sequential> <rule id=411> <conditionRef id=3/> <actionRef id=13/> </rule> <rule id=412> <conditionRef id=4/> <actionRef id=14/> </rule> <rule id=212> <actionRef id=22/> </rule> </ruleSet> <ruleSet location=113 default=213 displayRule=random> <rule id=511> <conditionRef id=5/> <actionRef id=15/> </rule> <rule id=512> <conditionRef id=6/> <actionRef id=16/> </rule> <rule id=213> <actionRef id=23/> </rule> </ruleSet> <ruleSet location=114 default=214 displayRule=weighted> <!-- A rule with no condition is always in contention for selection --> <rule id=611> <actionRef id=17/> </rule> <rule id=612> <conditionRef id=8/> <actionRef id=18/> </rule> <!-- a rule is treated default only when no rule is selected. Otherwise, a rule designated as default still pariticipates in race for selection and has conditions that should return true on test, to qualify. When acting as a default rule, test condition results are ignored. --> <rule id=214> <conditionRef id=7/> <actionRef id=24/> </rule> </ruleSet> </ruleSetList> <actionList> <action id=11> <image src=/pepsi/britney.jpg type=pframe> <pframe key=11 x=100 y=150/> <pframe key=12 x=200 y=150/> </image> <image src=pepsi/logo.jpg type=pframe> <pframe key=11 x=150 y=250/> <pframe key=12 x=250 y=250/> </image> <image src=pepsi/bottle.jpg type=pframe> <pframe key=11 x=200 y=350/> <pframe key=12 x=300 y=350/> </image> <button type=vod onclick=66>Go</button> </action> <action id=12> <image src=/weather.jpg type=bitmap/> <hotspot type=url onclick=/weather/forecast.xml/> <image src=/graph.jpg type=bitmap/> <hotspot type=url onclick=/finance/headlines.xml/> </action> <action id=14> <image src=/harrypotter.jpg type=bitmap/> <text>Harry Potter and the Chamber of Secrets</text> <hotspot type=vod onclick=12/> </action> <action id=15> <image src=/startrek.jpg type=bitmap/> <text>Star Trek: Generations</text> <button type=vod onclick=48>Preview</button> </action> <!-- <action id=16> </action> <action id=17> </action> <action id=18> </action> <action id=21> </action> <action id=22> </action> <action id=23> </action> <action id=24> </action> --> </actionList> <conditionList> <condition id=1> <and> <!-- current channel --> <test lhs=channel.name rhs=DISN op=eq/> <!-- current program genre --> <test lhs=program.genre rhs=COMEDY op=eq/> <!-- current program attributes --> <test lhs=program.length rhs=1800 op=eq/> <test lhs=system.time rhs=229012380911 op=ge/> <test lhs=system.time rhs=229012381840 op=lt/> </and> </condition> <condition id=2> <!-- current program --> <test lhs=program.name rhs=SEINFELD op=eq/> </condition> <condition id=3> <and> <!-- current network family --> <test lhs=channel.network rhs=ESPN op=eq/> <!-- current channel category --> <test lhs=channel.category rhs=SPORTSop=eq/> <!-- current iTV content type or category --> <test lhs=hmenu.category rhs=GOLF op=eq/> <test lhs=vmenu.category rhs=ON NOW op=eq/> <!-- time of the day, or day parts etc. --> <test lhs=system.time rhs=219012380919 op=ge/> <test lhs=system.time rhs=219012381838 op=lt/> </and> </condition> <condition id=4> <or> <test lhs=favorites.content rhs=ESPN op=eq/> <test lhs=last.content rhs=ESPN op=eq/> <test lhs=last.genre rhs=SPORTS op=eq/> <test lhs=favorites.genre rhs=SPORTS op=eq/> </or> </condition> <condition id=5> <or> <!-- set top properties : zip code--> <test lhs=subscriber.zipcode rhs=14128 op=eq/> <!-- subscriber profile : service tier --> <test lhs=subscription.tier rhs=SILVER op=le/> </or> </condition> <condition id=6> <or> <!-- saved set top behavior : last accessed --> <test lhs=last.channel rhs=FOXM op=eq/> <test lhs=last.network rhs=FOX op=eq/> <!-- saved subscriber info : favorites --> <test lhs=favorites.channel rhs=FOXM op=eq/> <test lhs=favorites.network rhs=FOXop=eq/> </or> </condition> <condition id=7> <or> <test lhs=subscriber.gender rhs=M op=eq/> <test lhs=channel.name rhs=MEN op=eq/> </or> </condition> <condition id=8> <and> <!-- subscriber profile : demographics --> <test lhs=subscriber.age rhs=21 op=gt/> <!-- current channel network --> <test lhs=channel.network rhs=HBO op=eq/> <!-- application data --> <data name=$$billing.hbo.paid[subscriber] value=TRUE op=eq/> </and> </condition> </conditionList> <videoList> <video number=12> <title>Harry Potter: The Chamber of Secrets</title> <providerId>Warner</providerId> <adiAssetId>1230982168092242</adiAssetId> </video> <video number=48> <title>Star Trek: Generations</title> <providerId>Paramount</providerId> <adiAssetId>1788752120922242</adiAssetId> </video> <video number=66> <title>Pepsi: Britney Singing Promotion</title> <providerId>Pepsi</providerId> <adiAssetId>1230982120922242</adiAssetId> </video> </videoList> <resourceKeyMap> <channel name=news> <template path=headlines.xml resource=1 key=11 location=111/> <template path=details.xml included=story.xml resource=1 key=12 location=112/> </channel> <channel name=sports> <template path=headlines.xml resource=1 key=21 location=111/> <template path=details.xml included=story.xml resource=1 key=22 location=114/> <template path=scores.xml resource=1 key=23 location=114/> </channel> <channel name=weather> <template path=headlines.xml resource=1 key=31 location=111/> <template path=forecast.xml resource=1 key=32 location=112/> <template path=maps.xml resource=1 key=33 location=112/> </channel> <channel name=finance> <template path=headlines.xml resource=1 key=51 location=111/> <template path=dow.xml included=graph.xml resource=1 key=52 location=113/> <template path=nasdaq.xml included=graph.xml resource=1 key=53 location=113/> </channel> </resourceKeyMap> </programming>
(38) As an example, and without limitation, an XML schema that supports the above XML, example can be given by the following XSD definition:
(39) TABLE-US-00003 <?xml version=1.0 encoding=UTF-8?> <xs:schema xmlns:xjc=http://java.sun.com/xml/ns/jaxb/xjc xmlns:jxb=http://java.sun.com/xml/ns/jaxb xmlns:xs=http://www.w3.org/2001/XNALSchema elementFormDefault=qualified attributeFormDefault=unqualified jxb:version=1.0 jxb:extensionBindingPrefixes=xjc> <xs:annotation> <xs:appinfo> <jxb:globalBindings> <xjc:serializable/> </jxb:globalBindings> </xs:appinfo> </xs:annotation> <xs:element name=programming> <xs:annotation> <xs:documentation>doc root of programming engine output</xs:documentation> </xs:annotation> <xs:complexType> <xs:all> <xs:element ref=ruleSetList/> <xs:element ref=actionList/> <xs:element ref=conditionList minOccurs=o/> <xs:element ref=videoList minOccurs=o/> <xs:element ref=resourceKeyMap/> </xs:all> </xs:complexType> </xs:element> <xs:element name=ruleSetList> <xs:complexType> <xs:sequence maxOccurs=unbounded> <xs:element ref=ruleSet/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name=ruleSet> <xs:complexType> <xs:sequence maxOccurs=unbounded> <xs:element ref=rule/> </xs:sequence> <xs:attribute name=location type=xs:unsignedInt use=required/> <xs:attribute name=default type=xs:unsignedInt use=required/> <xs:attribute name=displayRule type=displayRuleType use=required/> </xs:complexType> </xs:element> <xs:element name=rule> <xs:complexType> <xs:sequence> <xs:element ref=conditionRef minOccurs=o maxOccurs=unbounded/> <xs:element ref=actionRef/> </xs:sequence> <xs:attribute name=id type=xs:unsignedInt use=required/> <xs:complexType> </xs:element> <xs:element name=actionRef> <xs:complexType> <xs:attribute name=id type=xs:unsignedInt use=required/> </xs:complexType> </xs:element> <xs:element name=conditionRef> <xs:complexType> <xs:attribute name=id type=xs:unsignedInt use=required/> </xs:complexType> </xs:element> <xs:element name=conditionList> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=condition/> </xs:choice> </xs:complexType> </xs:element> <xs:element name=condition> <xs:complexType> <xs:choice> <xs:element ref=or minOccurs=o/> <xs:element ref=and minOccurs=o/> <xs:element ref=test minOccurs=o/> <xs:element ref=data minOccurs=o/> </xs:choice> <xs:attribute name=id type=xs:unsignedInt/> </xs:complexType> </xs:element> <xs:element name=or> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=and minOccurs=o/> <xs:element ref=test minOccurs=o/> <xs:element ref=data minOccurs=o/> </xs:choice> </xs:complexType> </xs:element> <xs:element name=and> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=or minOccurs=o/> <xs:element ref=test minOccurs=o/> <xs:element ref=data minOccurs=o/> </xs:choice> </xs:complexType> </xs:element> <xs:element name=test> <xs:complexType> <xs:attribute name=lhs type=paramType use=required/> <xs:attribute name=rhs type=xs:string use=required/> <xs:attribute name=op type=opType use=required/> </xs:complexType> </xs:element> <xs:element name=data> <xs:complexType> <xs:attribute name=name type=xs:string use=required/> <xs:attribute name=value type=xs:string use=required/> <xs:attribute name=op type=opType use=required/> </xs:complexType> </xs:element> <xs:element name=actionList> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=action/> </xs:choice> </xs:complexType> <xs:element> <xs:element name=action> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=image minOccurs=o/> <xs:element ref=text minOccurs=o/> <xs:element ref=button minOccurs=o/> <xs:element ref=hotspot minOccurs=o/> </xs:choice> <xs:attribute name=id type=xs:unsignedInt use=required/> </xs:complexType> </xs:element> <xs:element name=hotspot> <xs:complexType> <xs:attribute name=type type=targetType use=optional/> <xs:attribute name=onclick type=xs:string use=optional/> </xs:complexType> </xs:element> <xs:element name=button> <xs:complexType> <xs:simpleContent> <xs:extension base=xs:string> <xs:attribute name=type type=targetType use=optional/> <xs:attribute name=onclick type=xs:string use=optional/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name=image> <xs:complexType> <xs:choice minOccurs=o maxOccurs=unbounded> <xs:element ref=pframe minOccurs=o/> </xs:choice> <xs:attribute name=src type=xs:string use=required/> <xs:attribute name=type type=imageType use=required/> </xs:complexType> </xs:element> <xs:element name=text type=xs:string/> <xs:element name=pframe> <xs:complexType> <xs:attribute name=pid type=xs:string use=optional/> <xs:attribute name=key type=xs:unsignedInt use=required/> <xs:attribute name=x type=xs:unsignedShort use=required/> <xs:attribute name=y type=xs:unsignedShort use=required/> </xs:complexType> </xs:element> <xs:element name=videoList> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=video/> </xs:choice> </xs:complexType> </xs:element> <xs:element name=video> <xs:complexType> <xs:all> <xs:element ref=title/> <xs:element ref=providerId/> <xs:element ref=adiAssetId/> </xs:all> <xs:attribute name=number type=xs:unsignedByte use=required/> </xs:complexType> </xs:element> <xs:element name=title type=xs:string/> <xs:element name=providerId type=xs:string/> <xs:element name=adiAssetId type=xs:string/> <xs:element name=resourceKeyMap> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=channel/> </xs:choice> </xs:complexType> </xs:element> <xs:element name=channel> <xs:complexType> <xs:choice maxOccurs=unbounded> <xs:element ref=template/> </xs:choice> <xs:attribute name=name type=xs:string use=required/> </xs:complexType> </xs:element> <xs:element name=template> <xs:complexType> <xs:attribute name=path type=xs:string use=required/> <xs:attribute name=included type=xs:string use=optional/> <xs:attribute name=resource type=xs:unsignedByte use=required/> <xs:attribute name=key type=xs:unsignedInt use=required/> <xs:attribute name=location type=xs:unsignedInt use=required/> </xs:complexType> </xs:element> <xs:simpleType name=opType> <xs:restriction base=xs:NMTOKEN> <xs:enumeration value=eq/> <xs:enumeration value=ne/> <xs:enumeration value=lt/> <xs:enumeration value=le/> <xs:enumeration value=gt/> <xs:enumeration value=ge/> </xs:restriction> </xs:simpleType> <xs:simpleType name=targetType> <xs:restriction base=xs:NMTOKEN> <xs:enumeration value=channel/> <xs:enumeration value=url/> <xs:enumeration value=vod/> <xs:restriction> </xs:simpleType> <xs:simpleType name=imageType> <xs:restriction base=xs:NMTOKEN> <xs:enumeration value=bitmap/> <xs:enumeration value=pframe/> </xs:restriction> </xs:simpleType> <xs:simpleType name=paramType> <xs:restriction base=xs:NMTOKEN> <xs:enumeration value=system.time/> <xs:enumeration value=channel.name/> <xs:enumeration value=channel.network/> <xs:enumeration value=channel.category/> <xs:enumeration value=hmenu.category/> <xs:enumeration value=vmenu.category/> <xs:enumeration value=category.content/> <xs:enumeration value=program.name/> <xs:enumeration value=program.genre/> <xs:enumeration value=program.length/> <xs:enumeration value=subscriber.age/> <xs:enumeration value=subscriber.gender/> <xs:enumeration value=subscriber.zipcode/> <xs:enumeration value=subscription.tier/> <xs:enumeration value=favorites.channel/> <xs:enumeration value=favorites.network/> <xs:enumeration value=favorites.genre/> <xs:enumeration value=favorites.content/> <xs:enumeration value=last.channel/> <xs:enumeration value=last.network/> <xs:enumeration value=last.content/> <xs:enumeration value=last.genre/> </xs:restriction> </xs:simpleType> <xs:simpleType name=displayRuleType> <xs:restriction base=xs:NMTOKEN> <xs:enumeration value=random/> <xs:enumeration value=sequential/> <xs:enumeration value=weighted/> <xs:enumeration value=firstFound/> </xs:restriction> </xs:simpleType> </xs:schema>
Programmable Conditions
(40) The business rules that describe the programmable conditions for the placement of content along multiple dimensions, include sets of content programming rules that support the creation of user interfaces that permit (without limitation) the following:
(41) a. Time-shifted user interfaces that present different content selections to viewers based on time of day. Preferred placement selection can be conjunctive to time-of-day content selection.
(42) b. User interfaces wherein the viewer is presented different content selections based on the current broadcast content, to enhance the current broadcast and extend the content bandwidth. Preferred placement selection can be conjunctive to current broadcast dependent content selection.
(43) c. Tiled user interfaces wherein business rules can be specified to dynamically control content of each tile and/or dynamically control placement of each tile (preferred placement).
(44) d. Tiled user interfaces wherein the screen can be divided dynamically into different groupings of tiles, where the tiles have different sizes. Preferred placement selection can be conjunctive to content size and type.
(45) e. Tiled user interfaces consisting of groupings of grids of tiles wherein each grouping may be further sub-divided into more granular groupings of smaller tiles, based on navigation flow and business rules. These groupings may be individually scrollable using a remote control device.
(46) f. Tiled user interfaces wherein the transition between different tiled groupings on the screen can be dynamically controlled. Preferred placement selection can be conjunctive to positioning before or after such transition between groupings.
(47) g. Tiled user interfaces wherein the number of tiles in each screen grouping can be dynamically controlled. Preferred placement selection can be a factor in dynamically controlling the number of tiles in a grouping.
(48) h. Tiled user interfaces wherein the tiled screen groupings can be configured at a prior time and dynamically selected using business rules, including preferred placement rules.
(49) Promotions, up-sells, advertising, customer care and other content programming can be controlled by the MSO and/or MSO-designated networks and programmers. The programming of content can be conditioned by various dynamically executed business rules conditioned by parameters exemplified, without limitation, by the XML examples above:
(50) a. Current Application and application type.
(51) b. Location.
(52) c. Time-of-day and Day part.
(53) d. Current channel.
(54) e. Current network family.
(55) f. Current channel category.
(56) g. Current Program (TV or VOD).
(57) h. Current Program genre.
(58) i. Current Program attributes.
(59) j. Current Content type.
(60) k. Application data.
(61) Programming business rules can also be defined to target subscriber profile attributes such as:
(62) a. Demographic.
(63) b. Service tier.
(64) c. Geographic (e.g., based on postal code).
(65) d. Saved subscriber and set-top behavior and previous actions.
(66) Turning now to user interfaces that illustrate aspects of the present invention,
(67) 1. Dividing the screen into a grid of thirds;
(68) 2. Dynamically dividing each third into further sub-groupings which are themselves grids of tiles (the content of each tile can be dynamically controlled based on business rules); and
(69) 3. Allowing each grouping or grid of tiles to be individually scrolled or a tile therein selected using a remote control or other user input device.
(70) Collectively,
(71) In the embodiment shown in
(72)
(73)
(74) In some cases special offers may be shown only to viewers who do not presently have access to the featured service. Multiple promotions may be targeted to a given location and selected according to an MSO-controlled rule. Programming campaigns for overlay applications such as the main menu 40 may be broadcast out-of-band using trickle feed and updated dynamically by the application client. Overlay application campaigns may also be broadcast in-band in special cases as described below.
(75) Category Applications
(76)
(77)
(78) Video sponsorship opportunities also exist and videos may be displayed in appropriate inset windows as illustrated in these examples. For example, a broadcaster or network operator may sponsor the Sports Application by paying for a video inset that is dynamically scaled on the server and broadcast alongside the Sports Application data carousel in the same 6 MHz channel. In general, iTV applications that overlay full screen or inset video can read data and programming campaigns from the in-band carousel without having to tune-away only if the video channel is broadcast in the same 6-Mhz channel as the data carousel. This supports video sponsorship opportunities such the ones described herein as well as MSO barker channels.
(79) In addition, on-demand programming can be listed according to a priority that includes pay-for-placement. Content providers can pay to be listed higher in sequence thereby being the first titles that the viewer sees.
(80) Channel Hat
(81)
(82) Network Application/Mini-Guides
(83)
(84) The MSO can provide (paid) access to the network application in four ways: from the channel information bar associated with that channel; from the channel indicator in any On Now, On Later or Guide listing; from the channel indicator in the On Demand interface; and from promotional tiles advertising E! in others areas of the iTV service. The present example contains a pre-produced scaled video stream (VOD) blended with a full frame I-frame or motion background and listings for programs available on now, on later, and on demand as well as other content and promotions. By way of example, an E! application might provide the viewer with navigation to all On Now, On Later and On Demand programming from E!. The subscriber can filter content by network-defined category selections and metadata.
(85) Two content/promotions campaigns are also shown in the example illustrated in
(86) Pre-produced scaled video can be broadcast as one of the category video feeds, in which case the programmer channel would be carried on the same 6 Mhz channel as the data carousel and thus have access to the carousel. Alternatively, the pre-produced programmer application video can be broadcast on another channel, which would be tuned after the programmer application data is loaded.
(87) Microsites
(88) Similar to the network/programmer applications above, but on a smaller scale, microsites are advertiser and local content provider destinations consisting of a few (e.g., one to three) pages of content. Under the MSO's control, promotions and ad tiles may be sprinkled throughout the iTV service leading viewers to these advertising destinations, in addition to access from menu listings in the advertisers content area of the core iTV service.
(89) Shelf Space Business Example
(90) Shelf space describes how the MSO iTV application model can support business drivers, such as pay-for-placement, in order to monetize the core iTV navigation service as well as other iTV applications to sustain a free VOD model with advertising dollars. The following table 1 summarizes certain premium shelf space advertising elements and the application types that support each one.
(91) TABLE-US-00004 TABLE 1 Premium Shelf Spac Applications Ad Tiles All (Main Menu, MSO Home, Guide, Channel Hat, Movies On-Demand, Sports, Entertainment, Other Category Apps, Programmer Apps/Mini-guides, Settings, Parental Control, etc.) Scaled video Movies, Sports, Entertainment, Category Apps, Programmer Apps/Mini-guides List placement Movies, Sports, Entertainment, Category Apps, Programmer Apps/Mini-guides, Search Top Picks Movies, Sports, Entertainment, Category Apps, Programmer Apps/Mini-guides, Search, Main Menu
(92) Several examples are provided to illustrate scenarios for managing shelf space within iTV applications.
(93)
(94)
(95) Collectively, all of the preferred placement concepts demonstrated herein and as illustrated in
(96) a. Ad Tiles
(97) Programmers and advertisers can pay for the placement of promotions/ads in specific WCDUI applications (e.g., Main Menu, Sports, Movies On-Demand) based on a combination of programming conditions such as day part, IPG schedule, content category, service tier, channel/channel family, zip code, etc. Promotions can link to a VOD asset, to an interactive site (such as a specialty site, or a programmer application or a mini-guide), to current programming in the case of a TV program promotion, or to the Reminders or PVR Application in the case of On Later programming.
(98) b. Scaled VideoScaled video windows can support the programming of video clips on specific WCDUI applications (e.g., Sports, Movies On-Demand, Category Applications) based on multiple programming conditions such as day part, IPG schedule, content category, etc. These video clips, ads or previews may be user selectable, leading the viewer to a purchase screen for the promoted asset, to the Reminders or PVR App for the show, or to an advertiser iTV site.
(99) c. List Placement
(100) The present application system can support programming of premium placement of VOD listings for the various WCDUI applications such as Movies, Sports, Entertainment and other Category Applications. This support may depend on an enhanced interface to the client database so that the MAS programming engine can write a placement priority flag to the VOD listings database for selection during client database query execution.
(101) d. Top Picks
(102) A Top Picks tab can be added to applicable WCDUI applications such as Movies, Sports, Entertainment and other Category Applications. These WCDUI application avails are made available through the programming manager. Programmers pay for priority placement of content into this space.
(103) Programming Manager
(104) A programming manager associated with the application server may enable the MSO to manage and control all of the advertising opportunities described above in a uniform manner across all iTV applications deployed with the present application system across markets, platforms and middleware. The programming manager provides an administrative interface to create and manage programming campaigns. Using the programming manager, the MSO can specify and organize the business rules that target programmable content to subscribers, across disparate iTV applications distributed to multiple markets. The programming engine executes these programming campaigns and server rules, generates programmable content and client business rules, and thus automates the flow of programmable content into enabled applications. The present application system will also integrate with the MSO web application interfaces to retrieve service tiers and franchise rate codes to enable targeting content based on subscriber profile information.
(105) As used here, the term programming refers to the ability to dynamically control the promotions, advertising, video and other types of content that appear across all interactive services in a unified manner, as well as to control the manner and deployment of the application services themselves. The programming manager may include web-based interfaces for the MSO, and MSO-approved content partners to dynamically control and schedule these promotions, advertising, video and other types of content in a uniform manner based on relevance and other business rules. It provides customized management interfaces for specific functions such as managing application and programming asset inventory and for defining promotional, up-sell and ad campaigns. VOD asset metadata, program listings and managed content metadata are made available to programming interfaces via browsers and query engines.
(106) As used herein, the terms computer method, computer program, routine, and subroutine are substantially synonymous, with computer method being used typically (but not exclusively) to describe collections or groups of the latter two elements. Such programs and routines/subroutines may be rendered in any language including, without limitation, C#, C/C++, Fortran, COBOL, PASCAL, assembly language, markup languages (e.g., HTML, SGML, XML, VoXML), and the like, as well as object-oriented environments such as the Common Object Request Broker Architecture (CORBA), Java and the like. In general, however, all of the aforementioned terms as used herein are meant to encompass any series of logical steps performed in a sequence to accomplish a given purpose.
(107) It should be appreciated that some portions of the detailed description above were presented in terms of algorithms and symbolic representations of operations on data within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the computer science arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, it will be appreciated that throughout the description of the present invention, use of terms such as processing, computing, calculating, determining, displaying or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
(108) The present invention can be implemented with an apparatus to perform the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer, selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
(109) The algorithms and processes presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method. For example, any of the methods according to the present invention can be implemented in hard-wired circuitry, by programming a general-purpose processor or by any combination of hardware and software. One of ordinary skill in the art will immediately appreciate that the invention can be practiced with computer system configurations other than those described below, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, DSP devices, network PCs, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. The required structure for a variety of these systems will appear from the description below.
(110) The methods of the present invention may be implemented using computer software. If written in a programming language conforming to a recognized standard, sequences of instructions designed to implement the methods can be compiled for execution on a variety of hardware platforms and for interface to a variety of operating systems. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, application, etc.), as taking an action or causing a result. Such expressions are merely a shorthand way of saying that execution of the software by a computer causes the processor of the computer to perform an action or produce a result.
(111) Thus, methods and systems for providing preferred placement of programming content within an iTV system have been described. Although the present invention has been discussed with reference to several illustrated embodiments thereof, these were meant to serve as examples only and the true scope of the invention should only be measured in terms of the following claims.