Sorting

Utilization of information "push" technology

6807558

Abstract

An apparatus and computer-implemented method for distributing information to a plurality of client devices on a network is disclosed. The computer-implemented method includes the steps of: 1) receiving a variety of information from a plurality of sources, 2) organizing the variety of information into information categories, and 3) distributing the variety of information to the plurality of client devices based on the information categories requested by the plurality of client devices. The invention further includes the steps of: 4) accepting user input at the client device to specify information categories for retrieval from a server, 5) generating a user profile based on the information categories specified by the user input, and 6) retrieving information at predetermined intervals from the server based on the user profile.


Claims

We claim:

1. A method comprising:

receiving distributable information from a first information transmission service and receiving distributable information from a second information transmission service;

organizing the distributable information into information categories, including assigning the distributable information received from the first information transmission service to a first predetermined information category and assigning the distributable information received from the second information transmission service to a second predetermined information category; and

distributing at least a subset of the distributable information to each of a plurality of computers based on information categories indicated to be of interest to the plurality of computers.

2. The method of claim 1, wherein receiving distributable information includes receiving an advertisement from the first information transmission service and includes receiving news from the second information transmission service.

3. The method of claim 2, wherein the first information transmission service includes a stock market news transmission service, and wherein the second information transmission service includes a sports news transmission service.

4. The method of claim 1, wherein organizing further comprises selecting the distributable information, assigning the distributable information to one or more information categories, and formatting the distributable information for dissemination to the plurality of computers.

5. The method of claim 1, wherein distributing includes distributing the subset to the plurality of computers according to profiles that indicate categories of interest associated with each of the plurality of computers.

6. The method d of claim 5, wherein distributing includes distributing to a subscriber based on a subscriber identifier, a connection password, subscriber hardware and software configuration information that is used to determine the type of information that is compatible with the subscriber's computer, and category preference information that identifies information categories the subscriber wants to view.

7. The method of claim 1, wherein distributing comprises:

determining updated information to distribute to a first computer of the plurality; and

determining distributed information at the first computer to be deleted;

generating instruction specifying the distributed information to be deleted; and

sending the updated information and the instructions to the first computer.

8. The method of claim 1, further comprising receiving at least a portion of a user profile from each of the plurality of computers, the portion indicating preferred information viewing categories.

9. The method of claim 8, wherein distributing includes distributing based on the at least a portion of the user profile associated with each of the plurality of computers.

10. The method of claim 1, further comprising:

selecting a next recommended download time for each of the plurality of computers, the next recommended download times spread over time; and

sending the next recommended download time to each of the plurality of computers.

11. The method of claim 1, wherein distributing at least a subset of the distributable information includes distributing an information item having a wrapper that includes descriptive information that describes the properties of the information item.

12. The method of claim 11, wherein a format of the information item is HTML and a format of the wrapper is HTML.

13. The method of claim 11, further comprising:

receiving the information item having the wrapper;

storing the information item having the wrapper to a memory;

examining the wrapper of the information item and adding descriptive information that describes the properties of the information item to a record that also contains descriptive information for other information items; and

using the record to manage use of the information item on a computer.

14. The method of claim 1, wherein distributing at least a subset of the distributable information includes distributing an actor and distributing an information item that includes syntax to associate the information item with the actor, the actor to move around a display with the associated information item.

15. The method of claim 14, wherein distributing an information item includes distributing an information item with a wrapper, the wrapper containing descriptive information about the information item including a tag to associate the information item with the actor.

16. The method of claim 14, further comprising:

using the syntax to match the information item to the actor; and

displaying the actor and the information item.

17. The method of claim 1, wherein distributing at least a subset of the distributable information includes distributing an information item and distributing an actor that includes syntax to associate the actor with the information item, the actor to move around a display with the associated information item.

18. The method of claim 1, wherein receiving distributable information from a first network device includes receiving a text item and an associated image item, the method further comprising providing one or more tags to define the text item and the associated image item as a linked set to display simultaneously.

19. The method of claim 1, further comprising distributing software to one or more of the computers, the software to accept user input including subscriber information viewing preferences at the one or more computers and generate a user profile based on the user input.

20. The method of claim 19, further comprising:

providing user input that indicates information viewing preferences of a subscriber;

generating a user profile based on the user input; and

receiving categorized information based on the user profile.

21. The method of claim 20, further comprising transmitting the user profile to a server that serves a plurality of subscribers computers.

22. The method of claim 20, wherein providing includes providing computer hardware and software configuration information, and wherein receiving includes receiving categorized information files compatible with the configuration information.

23. The method of claim 20, wherein providing includes providing a subscriber identifier and a connection password.

24. The method of claim 20, wherein providing includes providing user input that indicates information categories the subscriber does not want to view and wherein receiving includes receiving categorized information that does not include those information categories.

25. The method of claim 20, wherein receiving includes receiving an advertisement and receiving categorized news.

26. The method of claim 20, wherein receiving includes receiving categorized information at a predetermined next connection time specified by an information server.

27. The method of claim 20, wherein receiving includes receiving categorized information randomly selected within boundaries of a user specified schedule of connections.

28. The method of claim 20, wherein receiving comprises receiving an information item wrapped in a content wrapper, wherein the content wrapper includes one or more predetermined tags that indicate one or more properties of the information item.

29. The method of claim 1, further comprising:

receiving a plurality of user profiles from a plurality of subscribers computers, each of the user profiles indicating information viewing preferences; and

generating a group profile based on the plurality of user profiles, the group profile representing a union of information viewing preferences for the plurality of subscribers computers.

30. The method of claim 1, further comprising:

receiving updated information and one or more instructions that specify previously received information to be deleted; and

deleting the previously received information according to the one or more instructions.

31. The method of claim 1, further comprising:

receiving distributable information at a subscriber computer, the distributable information including a headline having associated content, the headline linked with the associated content by one or more tags;

storing the distributable information in a memory of the subscriber computer;

representing the headline as an entry in a queue;

selecting the headline entry from the queue and displaying the headline on a display device of the subscriber computer if the associated content indicated by the one or more tags exists in the memory; and

displaying the associated content if the headline is selected.

32. The method of claim 1, further comprising:

receiving distributable information at a subscriber computer, the distributable information including a plurality of new information content items; and

dynamically displaying the plurality of new information content items so that the displayed content varies over time by using old instructions at the network device, the old instructions created before creation of the plurality of new information content items, the old instructions not containing instructions that are hardwired to the plurality of new information content items and to display the plurality of new information content items based on old tags that indicate properties of each of the plurality of new information content items.

33. The method of claim 1, further comprising distributing software to at least one computer of the plurality of computers, the software to generate display statistics corresponding to distributable information that is distributed to the at least one computer.

34. The method of claim 33, further comprising:

generating display statistics for at least one item of the at least a subset of the distributable information, the display statistics including information about the number of times the at least one item has been displayed; and

transferring the display statistics to a network location associated with the at least one item of the distributable information.

35. The method of claim 34, wherein transferring the display statistics includes transferring the display statistics at predetermined time periods.

36. The method of claim 34, wherein transferring includes transferring during a connection to a network information server to obtain updated information.

37. The method of claim 1, further comprising distributing a plurality of scripts to each of the plurality of computers, each of the scripts when executed controls the display of at least a subset of the distributable information for a period of time, including controlling items of the subset that are displayed and controlling a position of each of the items.

38. The method of claim 37, wherein at least one script when executed controls movement of an item.

39. The method of claim 37, wherein at least one script specifies fetching instructions for an HTML file and display instructions for an animation.

40. The method of claim 1, further comprising:

receiving a script specifying one or more information fetching instructions and one or more information display instructions; and

using the script to display at least a portion of the distributed information, the script controlling the display of the portion of the distributed information for a period of time, including controlling items of the portion that are displayed and controlling a position of each of the items.

41. The method of claim 40, further comprising:

receiving a second script; and

using the second script to display at least a second portion of the distributed information for a predetermined period of time, the second script controlling items of the second portion that are displayed, and controlling movement of at least one of the items.

42. The method of claim 40, wherein receiving comprises receiving a dynamic script that includes one or more associative tags to define the associative relationship between at least one text item and at least one image to create a linked set of the least one text item and the least one image.

43. The method of claim 42, further comprising displaying the linked set by sequencing through the dynamic script, finding the linked set, and playing the linked set regardless of the order of the linked sets constituent data chunks in storage.

44. A machine-readable medium having stored thereon data representing sequences of instructions that when executed cause a machine to:

receive distributable information from a first information transmission service and receive distributable information from a second information transmission service;

organize the distributable information into information categories, including assigning the distributable information received from the first information transmission service to a first predetermined information category and assigning the distributable information received from the second information transmission service o a second predetermined information category; and

distribute at least a subset of the distributable information to each of a plurality of computers based on information categories indicated to be of interest to the plurality of computers.

45. The machine-readable medium of claim 44, wherein the instructions further comprise instructions causing the machine to:

receive user input that indicates information viewing preferences of a subscriber;

generate a user profile based on the user input; and

receive categorized information based on the user profile.

46. The machine-readable medium of claim 44, wherein the instructions further comprise instructions causing the machine to:

generate display statistics for at least one item of the at least a subset of the distributable information, the display statistics including information about the number of times the at least one item has been displayed; and

transfer the display statistics to a network location associated with the at least one item of the distributable information.


Description

TECHNICAL FIELD

This invention relates to am improved system and method for distributing, utilizing and displaying disparate information in a "push" technology environment to a set of subscribers. More particularly, it relates to adaptations of information usage that conditions a "push" information system to optimally match and display headlines, information text, animations, graphics and photographs for the benefit of a user.

BACKGROUND

Push networks have been with us for several years. As contrasted with a user initiated search that starts fresh each time it is initiated, push technology brings new information to the user's desktop once an initial selection of news or other information items has been selected by the subscriber/user. In short, push technology is a system wherein each subscriber receives information, files and/or advertising from a network server for display at their local workstation on a refreshed and dynamic basis whenever a predetermined criteria, usually involving idleness of the local workstation, is met.

Push technology, in its simplest form, can be considered to start with 28 electronic mail (e-mail), messages delivered to a user from almost any source once the 29 user's e-mail identity and address have been established and made known. Another 30 barebones form of push technology is an Internet mailing list which causes subject related messages to be sent to a subscriber's computer. A more robust and current manifestation of push technology is exemplified by the PointCast Network whereby information content and advertising is distributed via the Internet to client based subscribers for display as a screen saver after the subscribers's workstation has been idle for a predetermined period.

In the PointCast Network, a user, employing locally installed push client software, subscribes to channels or topics of interest. Channels are information packaged in logical groupings. The user's expressed preferences are captured in a subscriber profile that can subsequently be changed as desired by the user. The system allows each user to customize the operation of his or her own push client, controlling the kind of information the client retrieves from the server and, within prescribed limits, the frequency of such refresh operations. Basically, after establishing a profile, the user receives updated information either in response to automatic polling of the content server at specified intervals by the push client software or in response to the server sending immediate information updates to client software that has been enabled for such frequent feeds of information.

The PointCast Network is an integrated client/server system that is designed to provide current information, along with advertisements, in an interesting and useful manner. The ability to supply and display all sorts of information for a subscriber in a compelling manner and timely fashion is what distinguishes the leading push technology systems, such as the PointCast Network, from the simplistic stuffed window approach.

The basic PointCast Network system is described in commonly assigned and co-pending U.S. patent application Ser. No. 08/489,591 filed Jun. 28, 1995 for an INFORMATION AND ADVERTISING DISTRIBUTION SYSTEM AND METHOD in the names of J. Reilly and G. Hassett. That application is incorporated herein by reference in its entirety.

With respect to improvements in the manner in which data communicated, directed and/or serviced in the PointCast Network system, please refer to commonly assigned and co-pending U.S. patent application Ser. No. 08/795,476 filed Feb. 11, 1997 for AN APPARATUS, METHOD AND ARTICLE OF MANUFACTURE FOR COMMUNICATING DATA BEHIND FIREWALLS AND PROXY SERVERS in the names of G. Hassett and J. Reilly, commonly assigned and copending U.S. patent application Ser. No. 08/797,724 filed Feb. 11, 1997 for AN APPARATUS, METHOD AND ARTICLE OF MANUFACTURE FOR REDIRECTING CLIENT REQUESTS ON A NETWORK in the names of J. Pistritto and K. Montinola and commonly assigned and co-pending U.S. patent application Ser. No. 08/800,153 filed Feb. 13, 1997 for AN APPARATUS, METHOD AND ARTICLE OF MANUFACTURE FOR SERVICING CLIENT REQUESTS ON A NETWORK in the names of G. Hassett and H. Collins. All three of these improvement patent applications are incorporated herein by reference in their entirety. In the original PointCast Network system, an information server stored and updated a database of information items and advertisements. The information items and advertisements were each categorized so that each was associated with a specific information category. Workstations remotely located from the information server each included a display device, a communication interface for receiving at least a subset of the information items and advertisements from the information server's database and local memory for storing the information items and advertisements received from the information server.

An information administrator in each workstation established communication with the information server from time to time in order to update the information items and advertisements stored in local memory with at least a subset of the information items and advertisements stored by the information server. An information display controller in each workstation caused the display on the workstation's display device of at least a subset of the information items and advertisements stored in local memory when the workstation meets predefined idleness criteria.

At least some of the workstations were provided with a profiler for storing the subscriber profile data. The subscriber profile data represents subscriber information viewing preferences, indicating information categories for which a subscriber associated with the workstation does and does not want to view information items. The information display controller includes a filter for excluding from the information items displayed on the display device those information items inconsistent with the subscriber profile data.

SUMMARY OF THE INVENTION

The present invention is an apparatus and computer-implemented method for distributing information to a plurality of client devices on a network. The computer-implemented method includes the steps of: 1) receiving a variety of information from a plurality of sources, 2) organizing the variety of information into information categories, and 3) distributing the variety of information to the plurality of client devices based on the information categories requested by the plurality of client devices. The invention further includes the steps of: 4) accepting user input at the client device to specify information categories for retrieval from a server, 5) generating a user profile based on the information categories specified by the user input, and 6) retrieving information at predetermined intervals from the server based on the user profile.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A depicts a block diagram of an information push technology system wherein information, advertisements, scripts and software updates are stored, transmitted and utilized.

FIG. 1B schematically shows the FIG. 1A information push technology system.

FIG. 2 illustrates a block diagram of a subscriber's workstation as adapted for use in the information push technology system of FIGS. 1A and 1B.

FIG. 3 schematically shows the procedures and data structures in a set of category managers.

FIG. 4 schematically depicts a user profile data structure showing status and configuration information for a particular subscriber and workstation as stored in that workstation.

FIG. 5 schematically illustrates the dialog box used to define the user profile for one information category;

FIG. 6 shows the schematic representation of a display generated on a 5 subscriber's display device using a screen saver procedure in association with the 6 workstation of FIG. 2.

FIGS. 7A and 7B schematically depict the dialog box used to define a display structure and the data structure resulting therefrom.

FIGS. 8 and 9 schematically depict data structures stored in a subscriber's 12 computer to indicate the advertisements and news stories available for display in various information categories.

FIG. 10 schematically illustrates a display generated on a subscriber's display device using a data viewer procedure.

FIG. 11 depicts the relationships between various processes in the information server.

FIG. 12 is a flow chart that shows the procedure for updating the local database and software modules of a subscriber's computer.

FIG. 13 shows a block diagram of an arrangement for creating a subscriber's display screen by playing pushed information content in accordance with the dictates of a local content manager and appropriate animation files.

FIG. 14 is a tabular representation of how animation scripts and the content they refer to are controlled for subscriber display purposes, all as a function of their association, if any.

FIG. 15 shows a structure of a componentized client having a local content manager at its center and interacting with a smartscreen, channel viewer, and fetch engine.

FIG. 16 shows a relationship between cache files containing data, content tables associated with the cache files, and an index of the content tables, which may be used by a local content manager to manage data in a client.

FIG. 17 shows a block diagram a local content management system including relationships between channels, a renderer, a smartscreen, an actor table, a local host server, content tables, a category table, a fetch engine, a fetch item table, and filters.

FIG. 18 shows an exemplary screenshot of a website of an ECOSOURCE connections publisher offering a "Subscribe to PointCast" connection button.

FIG. 19 shows an exemplary graphical user interface or screen that may be used to personalize the PointCast network.

FIG. 20 shows an exemplary graphical user interface or screen that may be used to modify connection properties.

FIG. 21 shows an exemplary SmartScreen that may be displayed.

FIG. 22 shows another example of a SmartScreen that may be displayed.

FIG. 23 shows an exemplary graphical user interface or screen that a Connection Wizard may use to initiate walking a user through identifying components of a connection.

FIG. 24 shows an exemplary graphical user interface or screen that may be used to have a user accept or reject a license agreement for each connection.

FIG. 25 shows an exemplary graphical user interface or screen that may be presented by a Connection Wizard when a user attempts to exit the Connection Wizard or cancel out of the license agreement.

FIG. 26 shows an exemplary dialog box that may be presented by a Connection Wizard when a user selects "I Don't Agree" from the license agreement interface of FIG. 24.

FIG. 27 shows an exemplary graphical user interface or screen that may be presented by a Connection Wizard after a publisher user has agreed to the license agreement to allow the publisher to edit or create a file.

FIG. 28 shows an exemplary graphical user interface or screen containing a list of connection articles that may be presented by a Connection Wizard.

FIG. 29 shows an exemplary graphical user interface or screen presenting additional functionalities to remove an article or move up or down in the list when a connection article is selected from the list of FIG. 28.

FIG. 30 shows an exemplary graphical user interface or screen for specifying article properties, in this case for an HTML type newsletter, which may be presented when an article is added or edited.

FIG. 31 shows an exemplary graphical user interface similar to that shown in FIG. 30 when the article type is animation.

FIG. 32 shows an exemplary graphical user interface or screen that may be presented by a Connection Wizard to allow a user to specify information used to label and identify a connection on the Internet.

FIG. 33 shows an exemplary graphical user interface or screen that may be presented by a Connection Wizard if Date/Time data entered in through the interface of FIG. 32 is inappropriate.

FIG. 34 shows an exemplary graphical user interface or dialog box indicating a connection has been created and providing an opportunity to register the connection.

FIG. 35 shows an exemplary graphical user interface or dialog box that may be presented if an invalid URL is submitted.

FIG. 36 shows an exemplary graphical user interface or screen that may be presented to allow a connection to be installed.

FIG. 37 shows an exemplary graphical user interface or screen that may be presented to allow authenticating information associated with a connection.

FIG. 38 shows an exemplary graphical user interface or screen that may be presented to allow downloading of connection articles to begin.

FIG. 39 shows an exemplary graphical user interface or screen that may be presented to display and allow modification of connection properties.

DETAILED DESCRIPTION OF THE INVENTION

Referring to FIG. 1A, there is shown a computer based information and advertising distribution system 100 having many client computers 102 and at least one information server computer 104. Client computers or workstations are often called "subscribers' computers or workstations" in the present document, and the terms "subscriber computer or workstation" and "client computer or workstation" will be used synonymously. In many instances, a set of subscribers 102 will be located within a common local area network (LAN), and are connected to a LAN server 108.

Each subscriber's computer 102 is connected to the information server 104 via the Internet 119 for a small fraction of each day. Other forms of electronic communication connections, including private wide area networks similar to CompuServe, America OnLine or Prodigy, can be used to connect subscribers' computers to the information server 104.

While most client computers are desktop computers, such as IBM compatible computers and Macintosh computers, virtually any type of computer can be a client computer as long as it can support the "screen saver" mode of operation described herein.

The information server 104 includes a central processing unit 110, primary memory 112 (i.e., fast random access memory) and secondary memory 114 (typically disk storage), a user interface 116, an Internet interface 118 for communication with the client computers 102 via the Internet 119, and one or more news wire interfaces 120 for receiving news feeds from information transmission services such as the AP news feed, the DOW news feed and various sports news feeds. An information editor 130 is used, typically under the direction of a person using the user interface 116, to select news stories received from the new feeds and to edit and format the news stories into a form suitable to dissemination to subscribers' computers using the present invention. The selected and edited news stories 132 are stored in an information database 134 in the information server 104.

The information editor 130 is used to assign each news story to an information category and, where appropriate, to also assign the news story to one or more sub-categories. The information editor maintains a list of the currently defined categories and sub-categories. The category list can be updated by the personnel operating the information server, typically to add and delete special new categories associated with major news events such as a famous trial or event which generates many news stories. The category to which each news story is assigned is represented in one or more Data Access Tables 136.

The information editor 130 is also used to divide most news stories into two components or portions: a primary component or portion and a secondary component or portion. The primary component is what is displayed on a subscriber's workstation when the subscriber's workstation is turned on but has been idle, while the secondary component is what is displayed, along with the primary components only upon a subscriber's request. For instance, as will be described below, there are number of ways in which a subscriber can request the display of the "full text" of a news item (which may include photographs and the like). For convenience, the primary component of each news story is sometimes herein called the "headline", even though it will often contain more information than just the headline of the news item, and the secondary component of each news story will sometimes be called the "body."

Advertisements 138 are also stored in the information database 134 and each advertisement is assigned to at least one of the predefined information categories. Each advertisement is displayed on subscribers' workstations simultaneously with news items assigned to the same category as the advertisement. When an advertisement is assigned to multiple categories, it is treated in most respects as several advertisements each assigned to one category, except that only one copy of the advertisement is actually stored.

Next, the information database in the server computer includes a set of images 140 used during the display of news items and advertisements. For instance, different "wallpaper" or background images may be useful when displaying news items in various types of information categories. As an example, the images 140 include three fixed images for indicating that the stock market has risen, fallen or stayed largely unchanged. Then, depending on what has happened to the stock market on any particular day, information concerning the amount of change in the stock market during the relevant time period, and sometimes other associated information, is superimposed on a selected one of those fixed images. Other images stored in the information database include various "actors" that can be moved around the display with the news items when the system is in screen saver mode.

The information database 134 also stores a set of "display scripts" 142. A script controls the display of news items and advertisements, typically displaying a selected number of news items and one advertisement for a period of 30 seconds. A script determines the number of news items displayed, determines the positions of the news items and advertisement on the display, determines any movement of the news items around the displayed image, and determines what background image or images are displayed in conjunction with the news items.

An important concept associated with the PointCast Network is that of constantly varying the presentation of news items and advertisements, through the use of a rotating set of scripts, makes it easier and more palatable for subscribers to read the news headlines and advertisements being presented. Thus, at least two distinct scripts, and preferably three or more distinct scripts are usually provided for most information categories, with a total of at least ten different scripts being used. Most scripts can be used with multiple categories of news items. The procedure for defining display scripts and the associated data structure are described below with reference to FIG. 4A.

The information database 134 also stores software modules 144 for downloading to subscribers' computers. The information administration management procedures and information viewing procedures in subscribers' computers will need updating and upgrading from time to time. The new versions of these software procedures are stored in the information server's information database 134 for downloading into the computers of subscribers at the same time that the information items or advertisements in the subscriber computers' information database 184 is updated. Since numerous types of subscriber computers are supported, the server's information database 134 will typically store a set of updated software modules for each of the supported types of computers.

Finally, the information database 134 includes advertising display statistics 148 and news item display statistics 149. The display statistics are collected from the subscribers' computers when the subscribers' computers call in for updated news stories and the like. Advertising display statistics indicate how many times each advertisement has been displayed on subscribers' computers. Display statistics for each advertisement are divided into a display count for displaying during data viewer usage, a display count for other display instances, and an indication of each advertisement the user has interacted with, such as by "clicking" on the advertisement to connect to the advertiser's World Wide Web page. News item display statistics 149 concern how much time the subscriber spent viewing each non-advertising item in the data viewer as well as the amount of time the screen saver was active for each information category.

Other procedures stored in the information server's secondary memory are a router procedure 150, application server procedures 152, and data server procedures 154. The utility of these procedures is explained below with reference to FIGS. 5 and 6.

FIG. 1B diagramatically illustrates an updated version of the information push technology system described above with respect to FIG. 1A. In this instance, subscriber workstations 200, typically PC-based computers, are coupled to and communicate with a caching proxy server 210 that is provided with a data cache 220 where frequently requested information can be stored. Proxy server 210 is connected to the Internet 250 via a firewall and/or proxy server 230. Additional details pertinent to this improved arrangement and other innovations for moving push technology supplied information for utilization by individual subscribers who are connected to the Internet via an intranet having a proxy server and/or firewall will be found in the aforementioned, co-pending and commonly assigned '476, '724 and '800 patent applications.

FIG. 2 is a schematic representation of the subscriberts workstation or computer 102 that is not connected to the information server 104 via a LAN server. For subscribers' workstations connected to the information server 104 via a LAN server 108, FIG. 2 is representative of the LAN server, but the display device used by each such subscriber's computer to view news items and advertisements is part of the subscriber's workstation rather than the LAN server 108.

The subscriber workstation 102 includes a central processing unit 170, primary memory 172 (i.e., fast random access memory) and secondary memory 174 (typically disk storage), a user interface 176, and an Internet interface 178 for communication with the information server 104 via the Internet 119. In this document, whenever the phrase "clicking on V is used, that phrase means a subscriber selecting the X image on a display device by positioning a pointer image over the X image, using the subscriber computer's mouse or trackball device, and then depressing a button or key to indicate selection of the X image.

An administration manager 180 schedules and controls all communications with the information server 104. The administration manager 180 includes a connection scheduler 181 that initiates the execution of a connection manager 182 that handles communications with the information server as well as the integration of information and software procedures received from the information server into the information and software procedures stored in the client computer.

The workstation's secondary memory is used to store a local information database 184 that includes news stories 183, advertisements 188, images 190 and display scripts 192. In each case the workstation's secondary memory stores at least a subset of the corresponding items stored in the information server 104. The amount of information stored in the workstation's secondary memory depends on the amount of secondary memory available for storing such information, as well as a user profile 194 for the subscriber that indicates which categories and subcategories of news stories are of interest to the subscriber.

Data Access Tables 186, which are discussed in more detail below with reference to FIGS. 5 and 6, are used to access news stories, advertisements and display scripts associated with each of the categories of news items that are to be displayed on the subscriber's workstation.

Screen Saver and Viewer Procedures 200 are a set of procedures for controlling the display of news stories and advertisements. These procedures include a main screen saver procedure 201, category managers 202, an animation engine 204, a profiler 206, a data viewer 208 and an advertisement display statistics generator 210.

Each of the category managers 202 is a collection of programs and data associated with particular information categories. In the preferred embodiment there is a separate category manager for each information category, although in some cases it may be more efficient to use the same category manager for two or more information categories.

Referring to FIG. 3, each category manager 202 includes a category profiler 202A, a category profile data structure 202B, one or more display drivers 202C for viewing items in the corresponding information category with the data viewer, a sprite generator 202D generating images displayed by the screen saver procedure, and an update 5 manager 202E.

The category profiler in each category presents a category profile dialog to the subscriber to determine the subscriber's interest in receiving information relating to particular subcategories. Subcategories may relate to specific companies, geographic regions, specific sports and sports teams, and so on, depending on the category. The result of the decisions made by the subscriber during the category profile dialog is stored as a category profile data structure.

The update manager in each category handles the process of updating the local information database with new items from the information server for that information category as well as the deletion of all items and the rebuilding of the portion of the data access tables used to control access to the information items, advertisements and display scripts in that information category.

The display drivers in each category manager are customized to generate images specifically needed in the corresponding categories. For instance, in the category manager for the sports category, the display driver includes instructions for generating a simulated scoreboard which is automatically updated every few seconds to show a sequence of game scores or contest outcomes in various sporting events. In another example, the display driver for the weather category includes instructions specifically designed for efficiently displaying weather maps and other weather information.

Referring once again to FIG. 2, the animation engine 204 interprets a currently selected display script and controls the display of a selected set of news stories and an advertisement in accordance with the instructions in the currently selected display script.

The profiler 206 is actually a set of procedures that define and update the subscriber's user profile 194. Referring to FIG. 4, in the preferred embodiment, the user profile 194 includes:

a subscriber identifier 212;

a connection passwork 213 used in conjunction with the subscriber identifier when connecting to the information server to identify the calling computer as a registered subscriber;

subscriber hardware and software configuration information 214 that identifies for the information server hardware and software information needed to determine the type of software and image files that are compatible with the subscriber's computer;

a connection schedule 215 that specifies to the connection scheduler 181 within the administrative manager 180 how often the subscriber's computer should connect to the information server 104 to update its information database 184;

category and subcategory preferences information 216 that identifies categories and subcategories of news stories that the subscriber does not want to view, as well as a list of "special categories" of news stories of special interest to the subscriber which override any categories noted as not being of interest to the subscriber;

timestamps 217a-217c indicating the time of the last updates to the subscriber computer's locally stored set of news stories, advertisements and administrative files (including scripts, images and software modules);

advertising and news item display statistics 218;

screen saver information 219 indicating the last displayed information category and the last displayed advertisement and news items in each information category are stored in a portion of the user profile 194 not transmitted to the information server; and

a screen saver exit mode indicator 220, indicating what actions cause the screen saver procedure to terminate and what actions cause the data viewer 208 to be executed.

The default connection schedule is for the subscriber's computer to initiate a connection to the information server once during the middle of the night (e.g., a randomly selected time between 11 p.m. and 7 a.m. local time) for an update," and once every four hours during the rest of the day for "news story updates." During the administrative update connection, the set of advertisements, scripts and images in the subscriber computer's local information database are updated as necessary, and any software upgrades are also downloaded onto the subscriber's computer. During both "administrative update" and "news story update" connections, the news stories in the subscriber computer's local information database are updated. At the option of the information server's system operator, script and/or software updates can be made during news story update" connections, especially when a malfunction has been detected in previously distributed scripts or software.

The profiler 206 can be used to specify a connection schedule other than the default schedule. For instance, if the subscriber's computer is typically turned off at night, the administrative update connection may be scheduled to occur (A) during the subscriber's typical lunch time, or (B) once per day when the subscriber's computer has not received any user input for a specified minimum period of time (e.g., ten minutes) that indicates the subscriber is away from his/her computer.

The downloading of advertisements (which are typically images), fixed images used by display scripts and software modules is preferably performed during the night or long periods of user inactivity because images and software modules are typically much larger than the news items, which are primarily text data. Images, including advertisements, and software modules are compressed using well known data compression techniques to make the download transmissions as time efficient as possible. Even so, downloading images is a time consuming process. For instance, downloading two high resolution advertisement images having pixel sizes of, say, 400.times.300 pixels each, even when using data compression, will typically take over two minutes using conventional 14 AK baud modems. By way of contrast, downloading a dozen news stories and corresponding database base update instructions will typically take less than fifteen seconds of connection time using conventional 14 AK baud modems. Therefore, updating the local database's set of news items can be accomplished relatively 4 unobtrusively even while the subscriber is using his/her workstation, while updates to the 5 advertisements and fixed images in the local database take longer and are therefore more intrusive.

It is noted that the secondary portions of news items can also include images, such as photographs that accompany the text of a news story. The transmission of such news story images can significantly increase the amount of connection time required for news item updates, and thus most news stories in the preferred embodiment do not use images, and every effort is made to transmit those news stories that have images to subscribers' computers during the overnight administrative update rather than during the daytime news item updates.

The data viewer 208 is a program for viewing news items that the subscriber specifically wants to read. The data viewer 208 can be executed at the subscriber's explicit command, and can also be launched from the screen saver if the user indicates he/she wants to read a news story shown in the screen saver display. This is explained in more detail below.

The display statistics generator 210 keeps tracks of how many times each advertisement in the local information database has been displayed since the last time advertisement display statistics have been transferred to the information server. The display statistics generator 210 also keeps track of how many times each news item has been displayed in the same time period. These display statistics are stored in the user profile 194 at 218. In the preferred embodiment, the advertisement display statistics, and news items display statistics, are transferred to the information server once per day during a connection also used to update the subscriber computer's information database. In alternate embodiments, the advertisement display statistics could be transferred more often (e.g., every time the subscriber's computer connects to the information server) or less often (e.g., once per week).

As mentioned earlier, each of the category managers includes a profiler procedure for defining the subscriber's interest in receiving news items within each information category. An example of the profile definition dialog generated by a category profiler, for the Sports category, is shown in FIG. 5. In this example, the Sports Definition Profile dialog box 222 includes, on the left side, a scroll box 223 in which the user can select and deselect subcategories of sports information by clicking on boxes next to the listed subcategories. A "Select All" button in the dialog box can be used (i.e., by clicking the subscriber computer's mouse or trackball device on the image of the box) to select all subcategories, and a "Deselect All" button can be used to indicate that the subscriber does not want to receive any news items for the Sports category. For each subcategory, either an "include only" or an "exclude" filter (but not both) can be defined where the user types in key words to be used to select (for the include only) or deselect news items within that subcategory. For instance, if the subscriber types in the words "49ers, Rams" in the box for the include only filter for the "football news" subcategory, only news items using either of those words will be shown to the subscriber.

The category manager profile procedure generates a category profile data structure 202B that represents the subcategories of interest to the subscriber as well as any associated filters that have been defined.

Referring to FIG. 6, there is shown in outline form a snapshot of typical display generated by the screen saver procedure of the present invention. On this particular exemplary display are shown three news story "headlines" 230a-232c and one advertisement image 232. Each of the headlines 230 is an image representing the text of the primary component" of a news items, as explained above. While the image shown in FIG. 6 appears static, in its preferred embodiment the display script that controls the display of the headlines and advertisement can and most often does contain instructions for continuously moving the headline images around the screen.

The display scripts also mix fixed images with the headline images to create varied and interesting displays. In one example of a display script, cartoon characters appear to move the headlines around. In another example of display script, the background behind and surrounding the headlines is a sequence of fixed images such as pictures of peaceful landscapes, while the headlines gently float around the portions of the display not occupied by the advertisement image 232.

Referring to FIG. 7A, the preferred embodiment provides an easy to use dialog 234 for display script definition. A display script consists of definitions for two or more actors, plus an optional definition of a background image, called the wallpaper image. Each "actor" represents a sprite, which is a displayable image, that can move and whose size can vary dynamically. An new actor is initially around the screen defined by selecting the "new actor" command in the Actor menu, as shown in FIG. 7A, and then entering a text string (shown in box 235) that specifies (A) the sprite generator procedure to use to generate the image for the actor, (B) the source of the information to be displayed, (C) the nominal width and height of the sprite (e.g., in units of pixels), and (D) any optional parameters that are specific to the specified sprite generator (e.g., a font may be specified for the News information category's sprite generator, whereas a font designation parameter may be meaningless for other ones of the sprite generators).

The specified sprite generator must be either the static sprite generator that is part of the animation engine 204, or is any specified one of the sprite generators 202D in the category managers 202. In an alternate embodiment, additional sprite generators may be provided by the animation engine 204, such as an animated sprite generator for successively displaying a sequence of images to simulate a motion. The source of information to be displayed is either a static image, in the case of the static sprite generator, or information items in a specified information category. For instance, the parameter "NextHL" in an actor definition indicates that the information to be displayed in the corresponding sprite is the next headline in the information category corresponding to the specified sprite generator for the actor. In another example, the parameter "NextAd" in an actor definition indicates that the information to be displayed in the corresponding sprite is the next advertisement image for the information category corresponding to the specified sprite generator for the actor.

The second stage of defining a sprite is to define its position and size at one second intervals, for 30 seconds in the preferred embodiment. The position of the sprite for a particular time can be defined by either typing in an X,Y, or by selecting a box representing the sprite with the user interface and then moving it to a position on a simulated display screen 236. The size specification for the sprite at each time is a percentage of the sprite's nominal size (e.g., "size=120" indicates the sprite is to be displayed at 120% of its nominal size). The full definition for a sprite includes thirty X,Y, size tuples for a thirty second screen saver display period. In a typical display script, nor more than one advertisement, three news items and two static images are used because the resulting display will be excessively busy, although the display script definition procedure allows a virtually unlimited number of sprites to be specified.

The data structure 237 representing each display script is shown in FIG. 7A: a header specifying the script's name, the number of actors defined in the script, an optional Wallpaper definition, and a list of all static images referenced by the script; plus a set of Actor definition arrays.

The screen save procedures interpret each display script and generate an animated display for 30 seconds based on the script. During display, the image corresponding to each actor is moved and sized in a virtually continuous manner, where the position and size of each sprite is linearly interpolated between the instantaneous position and size specifications for each second. During the display definition process, the sequence X,Y, size parameters for a currently selected actor can be smoothed, to produce more fluid movement and size changes of the actor by selecting the "smooth path" command in the Actor menu.

Referring to FIGS. 7A and 7B, the person preparing a display script using the display script definition dialog 234 can see the movement and sizing of the actors in the simulated display screen 236 by selecting the simulate command in the File menu, which cause the boxes in the simulated display screen 236 to move and be sized in accordance with the sequence of X,Y, size parameters for each specified actor.

While in the preferred embodiment, advertisements are always simultaneously displayed with news items. In other embodiments, advertisements and news items could be displayed sequentially. Computer programmers of ordinary skill in the art could modify the script definition dialog of the preferred embodiment, as described above, to define display scripts with sequential display of advertisements and news items.

Screen saver procedures for displaying news items and advertisements are invoked using the same types of criteria as are used by other types of screen saver procedures. Generally, whenever the system detects a lack of user inputs via either keyboard or pointer device (e.g., a mouse or trackball) for a user configurable or otherwise specified length of time (e.g., 5 minutes), the screen saver procedures of the present invention begin the display of news items and advertisements from the local information database. In the preferred embodiment, the screen saver procedures display news items and advertisements for a sequence of information categories in a sequence of 30 second time slots.

More specifically, under the control of the screen saver procedures, news stories and an advertisement assigned to a first information category are displayed using a first display script for 30 seconds, then news stories and an advertisement assigned to a second information category are displayed using a second display script for the next 30 seconds, and so on until news stories and an advertisement have been displayed in all the information categories indicated in the subscriber's user profile 194 as being of interest to the subscriber, at which point the process repeats with the first information category.

Referring to FIG. 8, news stories, advertisements and display scripts are stored in files or similar data structures which have assigned unique file names. Each news story (herein usually called a news item) is usually assigned to a single information category, although nothing in the system of the preferred embodiment would prevent a news story from being assigned to multiple information categories. Advertisements can 10 be assigned to multiple information categories as can display scripts.

As shown in FIGS. 8 and 9, the advertisements assigned to each information category are organized, through the use of a set of data access tables 186, in a separate linked list so as to create a separate "queue" of advertisements for each information category. Similarly the news items and display scripts assigned to each information category are organized in separate linked lists so as to generate separate queues of news items and display scripts for each information category.

FIG. 8 includes an example of an advertisement (AOO I) assigned to two 20 information categories (News and Sports). This advertisement is stored only once in the 21 workstation's local hard disk, but is included in two of the linked lists of advertisements.

The basic procedure for determining what display script, advertisement 24 and news stories to display during each 30 second time slot is shown in pseudocode form 25 in Table 1.

                             TABLE I
       Pseudocode Representation of Screen Saver Procedure
    Store, indication of last information category displayed,
    and for each category an indication of the last advertisement,
    news story and display script used.
    Do Until Screen Saver Mode is exited:
    {
    Select next information category (SIC).
    Select next display script (SDS) from queue of display scripts
     and next advertisement (SA) from queue of advertisements
     for the selected information category.
    Inspect selected display script to determine NN,
     the number of news items to be displayed. Select
     the NN next news items (SNI) from queue of
     news items for the selected information category.
    Update User Profile to indicate the last selected
     information category, and to indicate for the
     selected information category, the selected display
     script, advertisement and last selected
     news story.
    Call Animation Engine (SDS, SA, SNI) to display for
     the next 30 seconds the selected advertisement
     (SA) and news items (SNI) under the direction
     of the selected display script (SDS).
    Call Ad Display Statistics Generator to update displayed
     advertisement statistics to include the advertisement
     displayed during current screen saver display period.
    }


Each time the Screen Saver procedure 201 is invoked, it starts with the next information category after the last one to have been used, and starts with the next advertisement and news stories after the last ones used in that information category. The screen saver status information 219 indicating the last displayed information category and the last displayed advertisement and news items in each information category are stored in a portion of the user profile 194 not transmitted to the information server.

Execution of the Screen Saver procedure 201, like other screen savers, is terminated and the subscriber's computer's display is returned to whatever was being displayed before the Screen Saver was executed, upon detection of certain types of user input. In the preferred embodiment, the user can use the profiler to select one of at least two exit modes: in a first mode, the Screen Saver procedure is terminated by hitting any key on the subscriber computer's user interface keyboard or by moving the user interface's mouse or trackball; in a second mode, the Screen Saver procedure is terminated by hitting any key on the subscriber computer's user interface keyboard, but movement of the mouse or trackball does not cause the Screen Saver procedure to terminate. Rather, in the second screen saver exit mode, the subscriber can use the mouse or trackball to point to any of the news items being displayed and upon clicking one of the mouse or trackball's buttons, the data viewer 208 is executed with the news item selected by the subscriber being displayed.

When using the second screen saver exit mode, if subscriber user clicks on 16 an advertisement, the subscriber's computer is automatically connected to the an associated World Wide Web page on the Internet that Provides additional information from the advertiser. This is accomplished by World Wide Web connection and viewer procedures 211 (see FIG. 2) stored on subscriber's computer. Each advertisement is stored on both the information server and subscriber computers as a C++ data structure that includes (A) an image data array, typically representing a "GIF" format image, as well as (B) a list of static images (such as corporate logos and legends), if any, incorporated into the advertisement, and (C) a Web site address that is used by the World Wide Web connection and viewer procedures 211 to connect the subscriber to the advertiser's specified Web page when the subscriber clicks on the image of the associated advertisement.

Referring to FIG. 10, the data viewer 208 is a program for viewing news 29 items that the subscriber specifically wants to read. The data viewer 208 can be executed 30 at the subscriber's explicit command, and as just described in the immediately preceding section of this document, the data viewer can also be launched from the screen saver when the subscriber indicates that he/she wants to read a news story shown in the screen saver display by "clicking" the subscriber's computer's mouse or trackball on that news story.

The news stories shown in the center section 248 of the data viewer's display is selected by first selecting an information category by clicking on any of the category buttons 250 on the left margin of the display, and a subcategory button 252, if any, on the bottom margin of the display, and then clicking on the article advance backward and forward buttons 254 to scroll through the news items in the selected information category. When a news item has more than one photo image associated with it, the subscriber can click on the photo advance backward and forward buttons 256 to scroll through the photos.

Each news item displayed in the center section 248 of the data viewer's display includes both the primary and secondary portions of the news item, thereby providing the subscriber in most instances with access to a fuller version of the news item than was shown by the screen saver. In the case of very short news items, the entire news item may be contained in its primary component. Furthermore, in client computers with very limited hard disk space available for storing news items, as indicated by the user profile 194 for the client computer, the secondary component of news items may not be stored in the local information database in order to conserve disk space.

A portion of the data viewer screen is always occupied by an advertisement image 258. The advertisement image shown is selected on the basis of the information category associated with the news item being viewed. In a preferred embodiment, the advertisement shown in the data viewer screen is changed (A) every time the subscriber clicks on a category button 250 so as to select a different information category than the one previously selected, and (B) every 30 seconds when subscriber continues to view news items in a single information category for more than 30 seconds. The advertisements are selected in rotating order among the advertisements assigned to each information category, as described above for the screen saver procedure.

When using the data viewer, if subscriber user clicks on the displayed advertisement, the subscriber's computer is automatically connected to the an associated World Wide Web page on the Internet that provides additional information from the advertiser.

The Options button 260 is used to invoke dialog procedures in which the subscriber specifies general preferences, such as how quickly data scrolls in the scrolling windows, and which mode of screen-saver termination the subscriber prefers.

Referring to FIGS. 11 and 12, the information server is preferably a set of computers interconnected by a local area network that each operate under a multi-tasking, multi-threading operating system such as Microsoft's Windows NT. The information server 104 has multiple "application servers" 272, which are processes run on one or more computers. Each application server 272 preferably has multiple threads, each of which can service one connection with a client computer at any one time.

A primary concern with the architecture of the information server is that the information be able to handle a very large volume of connection requests from client computers. The information server may need to service thousands of connection requests per hour, and thus efficient handling of each connection request is important.

In a preferred embodiment, during each connection of a subscriber computer to the information server, the information server sends a "next recommended download time" to the subscriber computer along with the other information being downloaded onto the subscriber computer. The server computer selects the next recommended download times sent to the various subscriber computers so as to spread their connection requests fairly evenly over time. In an alternate embodiment, connection requests are spread over time by having the subscriber computers randomly select connection times within the general boundaries of a specified schedule of connections (e.g., a randomly selected time anywhere within a half hour, plus or minus, of each scheduled connection time).

When a client computer first initiates a connection to the information server, it sends a first message to the Internet address associated with a router process 270 in the information server. The router selects an application server 272 with at least one available thread and passes back to the client computer an Internet address associated with that application server.

The client computer then sends a portion of its user profile to the assigned application server. If an administrative update is being requested, the locally accumulated advertising display statistics 218 (see FIG. 4) are also sent to the application server.

Based on the time of day and the information in the transmitted user profile, the application server determines (A) what type of update is to be performed (i.e., a news item update or an administrative update), and (B) what new information needs to be downloaded to the client computer and what items in the client computer's local information database should be deleted. The application server 272 then makes calls to one or more data servers 274 to collect all the information that needs to be sent to the client computer and then sends those items to the client computer, along with instructions on what items, if any, should be deleted from the client computer's local information database.

The client computer then loads the received information into its local database, and replaces software modules with received software modules, if any. It also deletes the items, if any, specified for deletion by the information server. Finally, it updates its data access tables 186 to incorporate all the changes to the information database so that the client computer is ready to display news items and advertisements in each information category.

A more detailed explanation of the local database update process is provided by a pseudocode representation of that process in Table 2.

In one preferred embodiment, when the "client" that is connected to the information server for an update is itself a local area network server, the client downloads all news items into its local database. In a second preferred embodiment, the client/LAN server generates a group profile that represents the union of all news category and subcategory preferences of the subscribers connected to the client computer, and news items are downloaded into the client's local data base based on that union group profile. In either embodiment, the screen saver procedures filter out news items in the LAN server's local information database that are not consistent with each subscriber's user profile, thereby showing each subscriber only the subset of news items corresponding to the subscriber's user profile. In the preferred embodiments, the subscriber level news item filtering is accomplished by setting up the subscriber's data access tables 186 to include only news items corresponding to the subscriber's user profile. In the computers of stand alone subscribers, the filtering of news stories is handled during the data download process, by only downloading news items corresponding to the subscriber's user profile.

The subscriber level news item filtering function is also used to enable the information server to instruct the subscriber's computers to "black out" an advertisement, without deleting it from the local database. For example, a company may want to suspend its advertisements for a few days after a disaster involving the company. The black out function is achieved by simply removing the corresponding advertisement(s) Crom the advertisement queues in the data access tables. For this purpose, the information server and subscriber computers may temporarily define a "non-use" information category and a corresponding advertisement queue for keeping track of blacked out items.

                             TABLE 2
      Pseudocode Representation of Database Update Procedure
    Connect to Information Server
    If Update Type=Administrative /* i.e., not a news story only update*/
            {
            Client sends display Statistics to server, and clears
             display statistics upon confirmation that server
             has successfully received them
            /* Pool Synchronization*/
            Server Sends list of items (i.e., advertisement and scripts)
             that should be included in the client's advertisement
             and script pools
            Client deletes items in its advertisement and script pools
             that are not included in the list received from the Server
            Client determines what items are missing from its
             advertisement and script pools
            Client sends requests to Server for advertisements
             and scripts determined to be missing from local pools
            Server sends requested items to Client
            Client stores received advertisements and scripts
             in their respective disk directories
            Client opens all advertisement and script files to
             determine the static images referenced by those
             files, but not included in the local static image pool.
            Client sends requests to Server for static images determined
             to be missing from local pool
            Server sends requested items to Client
            Client stores received static images in their assigned
             disk directory
            /* Software Module Synchronization*/
            Client sends message indicate it is ready for software
             synchronization, including date and time of last
             administrative update
            Server sends new software modules, if any, based on date
            and time of last administrative update
            }
    For each Category Manager (CMx)
            {
            /* CMx.Fetch Procedure:*/
            Client (CMx.Fetch procedure) sends profile data
             for CMx to Server, including subcategory data
             and filter data, if any
            Server sends items consistent with profile data
            Client (CMx.Fetch procedure) stores received items in data
             structures and files for that category
            Client (CMx.Fetch procedure) deletes items, in FIFO order,
             for current category which (A) exceed data storage
             limit in date, (B) exceed item count limit, or
             (C) exceed specified age limit
            /* Item storage limits 221 for each category are
        defined in a portion of the user profile 194 (see FIG. 4) */
            }
    Client updates data access tables
    Return


One embodiment of the present invention comprises a computer-implemented method for distributing information to a plurality of client devices on a network, the computer-implemented method comprising receiving a variety of information from a plurality of sources, organizing the variety of information into information categories, and distributing the variety of information to the plurality of client devices based on the information categories requested by the plurality of client devices. The computer-implemented method may further include accepting user input at the client device to specify information categories for retrieval from a server, generating a user profile based on the information categories specified by the user input, and retrieving information at predetermined intervals from the server based on the user profile. Another embodiment of the present invention comprises a computer-implemented method for varying information displayed on a client device, the computer-implemented method comprising maintaining a plurality of scripts on the client device, executing a first script from the plurality of scripts to display a first set of information for a first predetermined period, and executing a second script from the plurality of scripts to display a second set of information for a second predetermined period. Still another embodiment of the present invention comprises a computer-implemented method for generating and maintaining information access statistics for each piece of information stored on a client device, the computer-implemented method comprising generating tracking information indicative of a number of times each piece of information is displayed during a predetermined period, and transferring the tracking information to a server at predetermined intervals.

Several improvements of note have been made with respect to PointCast's client push software and improved server with respect to the manner in which access to and display of pushed information is implemented and coordinated. These improvements are as follows:

A. Dynamic Actors:

Dynamic actors match content in the client to actors in an animation based on properties of the actors and the content, rather than any hard-coded reference. This ability is necessary to create and support "template" animations, such as SmartScreens, that can rotate through all content on a given user's machine-independent of what specific content is present; for example, displaying a headline from the News channel in a SmartScreen without referring to a specific news article.

In the earlier versions of PointCast, the channels themselves did the mediation between data and animations. However, now that there is centralized content management in the client (see the Local Content Manager specification and description hereinafter), content providers can create compelling animations, and are allowed to do so, without client code changes, by removing the channels from this process. There is also an additional performance and memory footprint benefit to this restructuring in that the SmartScreen can now run independently of the Channel Viewer.

To extricate the channels from actor creation, however, it is necessary to establish a method and syntax for content to declare what actors it can create and for each dynamic actor in an animation to declare what content it needs. For content, the ACTORS tag in the wrapper and PCN-ACTOR tags in the body (for HTML items) can be used to declare what actors it can create. For actors, the ACTORDATA tag in the initialization section of the animation can be used to declare what data it needs. LCM and special iteration code called by an animation engine (in the presence of an INITIALIZE tag) will match content to actors.

Content: Declaring Dynamic Actors

Actors are declared in content using the ACTORS property in the wrapper of the data item (for more information on wrappers, see the Fetching and LCM spec). The syntax for the ACTORS property is: [<content ID>=]<name>[,<name>. . . ][&<content ID>=<name>[,<name>. . . ]. . . ].

To break this down more specifically, in the case where the entire data item is to serve as the actor, then no content ID need be specified. For example, a weather map uses the following actors string:

ACTORS="Map"

However, through the use of the PCN-ACTOR tag, multiple actors can be declared within one HTML item, and those actors can even be grouped together to correspond to individual stories within the item using the ContentID property of the PCN_ACTOR tag. For example, a digest article with two summary articles might have the following ACTORS property (where Story1 and Story2 are the two Content IDs):

ACTORS "Story1=Summary, Photo& Story2=Summary,Photo,Photo2"

The syntax for the PCN_ACTOR tag is:

<PCN_ACTOR

ContentID=

Name=

[Data=URL]

>

[DATA]

</PCN_ACTOR>

where the data to associate with the PCN_ACTOR is either specified by the Data property, or if the Data property is not present, then the data between the open and close PCN_ACTOR tags is used.

Note: If there is more than one PCN_ACTOR tag in a data item that uses the same ContentID and Name, then the last specified Data property will be used. In the case where no Data property is present for any of the PCN_ACTORs, then the data for all of the tags will be concatenated together and returned.

The following table gives a more detailed explanation of each of the PCN_ACTOR properties.
                            PCN-ACTOR
    Field
    Name    Type  Default   Description
    CON-    Value 0         ContentID is used to mark actors as
    TENT-                   belonging to the same content item when
    ID                      a file contains multiple content items
                            (i.e., a digest file) and can be any
                            string value. ContentID "0" is a
                            special case that serves as the default
                            ContentID for any data item. Content ID "0"
                            is useful when PCN_ACTORS are needed
                            (because actors are embedded within the
                            HTML), but there's only one story (content
                            ID) in the document.
    NAME    Value Summary   The NAME property is used to identify data
                            as being of a certain type (editorial type, not
                            render type). An example of the usage of
                            NAME is if a content provider wished to
                            specify one section of every HTML article as
                            being the "Abstract," they could add
                            PCN_ACTOR tags that had
                            Name = "Abstract"
                            to all of their content and then create
                            SmartScreens that only called for Abstracts.
    DATA    URL             A URL to the data for this actor. This field is
                            optional. When not present, the data between
                            the open and close PCN_ACTOR
                            tags will be used.


Animations: Initializing and Using Dynamic ActorsInitializing Dynamic Actors

Dynamic actors are initialized in an animation script using the ACTORDATA tag. This tag describes the data needed by an actor and appears in the initialization section of the animation (the initialization section is demarcated by the INITIALIZE tag).

In addition to the ACTORDATA tag, ACTORGROUP tags are used to specify the relationship of ACTORDATA requests to each other, as well as to impose requirements for the successful initialization of the animation. More specifically, ACTORGROUP tags can be used to specify which ACTORDATA request should come from the same category or content item, as well as specify which or how many ACTORDATA requests must be fulfilled (matched with content) before the entire 11 animation can be considered successfully initialized.

An entire animation can be considered successfully initialized if the top level ACTORGROUP tag is successfully initialized. In the case where there is more than one top-level ACTORGROUP tag, there is an implied generic ACTORGROUP (see below) that encloses the entire initialization section. Following is the structure of the INITIALIZE section of an animation:

<INITIALIZE>

ACTORGROUPS/ACTORDATA

</INITIALIZE>

<ACTORGROUP>

Type=Story.vertline.Category.vertline.Generic

Create=A11.vertline.1.vertline.2.vertline.. . .

Required=A11.vertline.1.vertline.2.vertline.. . .

InitOrder=Sequential.vertline.Random

[Restrictions]

>

ACTORGROUP.vertline.ACTORDATA

</ACTORGROUP>

>ACTORDATA

ActorName=

ID=

>

</ACTORDATA>

Here are more in-depth descriptions of the ACTORDATA properties.
                            ActorData
    Field
    Name      Type  Default   Description
    ACTOR-    Value _TITLE    ACTORDATA tags are linked to
    NAME                      PCN_ACTORs via the ACTORNAME
                              property. To fulfill an ACTORDATA
                              request, the client scans the currently
                              selected portion of LCM (i.e., within the
                              current channel and category ACTOR-
                              GROUP) for a data item that contains
                              a reference to this ACTORNAME.
                              Usually, the ACTORNAME is found in
                              the ACTORS field, however the default
                              ACTORNAMES have custom require-
                              ments for intializations (see table below).
    ID        Value           The ID is used as an identifier for the
                              data that an ACTORDATA request will
                              return if successfully initialized. To access
                              this data, actors in the animation script
                              will have an ActorDataID property that
                              matches the ID of an ACTORDATA
                              request.


While most ACTORNAMEs need to be listed in the ACTORS field in LCM to be successfully initialized, there are some built-in ACTORNAMEs that don't need to be listed and have different requirements for initialization:
                        Default ActorNames
              Requirement
    Field     for
    Name      initialization Description
    _TITLE    Non-empty     The TITLE field in LCM, as text.
              TITLE         Especially useful for headlines.
              field
    _DATE     Valid         The date stamp of a content
              CREATION.sub.--  item, as text.
              TIME
              field
    _CATE-    Defined       The name of the channel, as text.
    GORY-     in channel
    NAME
    _CATE-    Defined       The logo for a category (i.e. the Money
    GORY-     in channel    magazine logo in the Pathfinder channel).
    LOGO
    _CATE-    Valid         Gives the time when the current category
    GORY-     LAST.sub.--   was last updated, as text.
    DATE      UPDATED
              time


The properties for the ACTORGROUP tag:
                            ActorGroup
    Field             De-
    Name      Type    fault Description
    TYPE      Value   Key   Values: Story.vertline.Category.vertline.Generic
                            The Type property specifies what content
                            needs to be iterated through to look for
                            ACTORDATA when this ACTORGROUP is
                            initialized.
                            Story - Iterates through content IDs for the
                            current channel and category. Stories can be
                            either at the data item level, or the
                            content ID level.
                            Category - Iterates through all categories in
                            the current channel (the category list will be
                            returned by the channel itself -- this is the
                            one remaining dependence on channels
                            for actor creation in 2.0).
                            Generic - Used for grouping conditions for
                            successful initialization of the animation.
                            The Generic ACTORGROUP does not
                            cause any iteration itself.
    CREATE    Value   KEY   Specifies the number of child
                            ACTORGROUP or ACTORDATA tags to
                            initialize. For example, if an ACTOR-
                            GROUP has a Create value of 1 but has
                            three child ACTORGROUP tags, as soon
                            as one ACTORGROUP is successfully
                            initialized, the actor iteration code
                            would not even attempt to initialize
                            the others.
    RE-       Value   --    Specifies the number of child tags that
    QUIRED                  must be initialized. If the required number
                            of ACTORGROUPs cannot be initialized,
                            then the ACTORGROUP itself will fail
                            initialization.
    INIT-     Value   Se-   Values: Sequential.vertline.Random
    ORDER             quen- This property specifies what order the
                      tial  ACTORGROUP should use in attempting to
                            initialize its children.
                            Sequential - The ACTORGROUP initializes
                            its children in the same order they appear
                            in the INITIALIZE tag.
                            Random - The ACTORGROUP initializes its
                            children randomly (but only attempts
                            once per child).
    [Restric- --      --    Any number of properties can be specified
    tions]                  that will serve as restrictions on LCM
                            tables. These restrictions further define the
                            set of data to be scanned looking for
                            ACTORDATA. See the Restrictions table
                            below for the set of supported
                            restrictions.
                           Restrictions
    Field
    Name      Type  Default Description
    [CHAN-    Num-  Channel This is an implied restriction.
    NEL]      ber   of SS   In 2.0, only the channel that called
                            the animation (via the Smart-
                            Screen catalog) can be used to generate
                            dynamic actors for that animation.
    SKIP-     Bool- True    If true, don't initialize content IDs or data
    SHOWN     ean           items that have already been marked as
                            shown in LCM (using the
                            ACTORS_SHOWN property).
    NEW-      Num-  --      Can only be applied to a Category
    NESS      ber           ACTORGROUP, the newness value is the
                            number of seconds since the last time the
                            category was updated. The logic is: If (last
                            fetch time - article creation time <
                            newness value) then the article is new
                            enough to be shown.


Using Dynamic Actors

And then, within the MOVIE tag itself:

<ACTOR

ActorDataID=

. . .

>

</ACTORDATA>
                              Actor
    Field             De-
    Name      Type    fault Description
    ACTOR-    String  --    This property ties an Actor to the
    DATA-                   ACTORDATA tag with this ID. The actor
    ID                      will be created using the data initialized by
                            the ACTORDATA tag corresponding to this
                            ID, and will not be created at all if the
                            ACTORDATA tag is not successfully
                            initialized. If the actor already has a DATA
                            tag, then the actor will be created using the
                            file specified by the DATA tag, but only
                            if its associated ACTORDATA tag was
                            successfully initialized. This is useful for
                            tying graphic actors (such as bullets)
                            to the successful creation of dynamic
                            actors (such as headlines).


Smart Screens

SmartScreens are the only animations in the 2.0 client that use dynamic actors. While the INITIALIZE section specifies whether or not an individual SmartScreen can be successfully initialized, there is an overall logic that determines which SmartScreen to play next:

For each channel in the viewer's selected channel list, attempt to initialize each SmartScreenfor that channel. If all the SmartScreensfail to initialize, clear the ACTORS-SHOWNflags in LCMfor the current channel and then try all the SmartScreens again. If all fail yet again, then on to the next channel. If all channels fail, then play a "house" SmartScreen.

Dynamic Actors in 2.0 channels

Channels

Channel nameactor type example (pcn_actor, actor tag, ss)

,Channel[s], PCN_ACTOR,

Channel ACTORS string/inline actors, SmartScreen initialization
        Channel
        Name                 ACTORS          INITIALIZE
        Companies
        Industries
        Lifestyle
        PathFinder
        Boston Globe
        Chicago Tribune
        Globe and Mail
        Hot CoCo
        LA Times
        Mercury Center
        Miami Herald
        Minneapolis
        Star-Tribune
        NY Times
        Philadelphia
        Online
        Seattle Times
        Tampa Tribune
        Wall Street
        Journal
        CNN
        CNNfn


One of the difficulties in the presentation of pushed information results from the fixed association of text and a photograph or an image of some kind and the strong desirability, if not absolute requirement, for displaying the associated information at the same time. In fact, because the text and photograph of an associated pair would not be as interesting or informative if displayed separately, the default for the utilization of such tightly coupled material is to display them together or not at all. This result is somewhat difficult to achieve because the associated material may not all be present when needed or it may not be associated when received by the client.

These difficulties are overcome by defining PCN-Actors or data chunks in a dynamic script, where the defined actors are provided with appropriate associative tags that define the associative relationship between text and photographs or other images. In other words, a linked set of text and photograph is created. The iteration code that sequences through the dynamic script would then come across that linked set, and any others, and try to play each of them as a pair, regardless of the order of their constituent data chunks in storage. If, for some reason, the associated text and photograph can't be found, their SmartScreen is not played and the next dynamic actor in the script is displayed. In that manner, client administration is optimized by permitting all playable content, whether or not they comprise associated data chunks, to be used and displayed in the most efficient way.

Referring now to FIG. 13, it can be seen that content from local storage means 1310 is accessed by the local content manager 1320, which includes an iterator function and code therefor. Hints in the form of PCN tags are placed in the content in order to aid the iteration process. That content is made available to an animation engine 1330 by the iterator code. In addition, dynamic actors 1340 (a graphic file) and 1350 (a text file) from animation file 1360 are forwarded to the local content manager 1320 for iterated feed to the animation engine 1330. The animation engine 1330 then forwards its output to the display unit 1370 of the client workstation.

An example of how the iteration code serves the appropriate content for display is illustrated by FIG. 14. Assume that a first animation script file 1410 holds references to various summaries associated with particular news headlines. Alternatively, the news summary could be and often is replaced by a photograph, chart, illustration or other graphic specifically associated with a particular news headline. A second animation script file 1420 holds the news headlines. In the FIG. 14 example, the delivered content is assumed to comprise several headlines (HL I, HL2 and HL3) and at least two summaries (SUM I and SUM2). The specification for and file format of animation script files as used herein can be found in Appendix I to this specification.

When animation script file I is played, it reaches a call for SUM I, accepts that information and causes it to be displayed on the client workstation display 1370. Next, animation script file 2 is played and its call for HL I is responded to causing HL I to be played in a scripted associative fashion with respect to SUM I on the client workstation display 1370. The same routine is followed for display of SUM2 and HL2. The asterisk alongside headlines HL I and HL2 indicates that these headlines have summaries or another item associated with each of them. That is not the case for HL3.

When animation script file 1 is next interrogated, its non-associated status is reported, i.e.--there is no SUM3, whereupon the interrogator code causes HU to be played by itself However, had HU been an associated headline, the lack of a SUM3 in the content queue would have resulted in HU being skipped since the display of a headline without its associated summary or photograph is deemed to be undesirable. Further, if there were several dozen or more unassociated headlines present, they would all stand an equal change of being displayed depending on their order in the content queue.

The versatility of this approach is to be contrasted with animation code that is embedded in an HTML page and played by a Visual Basic or Java script. The present invention is versatile and content driven while the HTML approach, even with dynamic HTML, is content limited and restricted by its "hardwired" content approach.

B. Local Content Manager

Content Management

Better enable multi-part articles

Provide client-level ability to add, delete, reorder etc. content

Maintain properties on content (i.e. read or unread)

Componentization

Embedded third-party browser

Constellation, Active Desktop, and JavaStations

FIG. 15 shows a structure of a componentized client having a local content manager at its center and interacting with a smartscreen, channel viewer, and fetch engine.

Summary

The Local Content Manager (LCM) is responsible for serving as well as adding, removing, and modifying properties of all data in the client that is not administrative (administrative data includes software, animations, catalogs, etc.). The LCM works by keeping a record of properties for each data item on the client. These records are created and edited through the use of content wrappers.

FIG. 16 shows a relationship between cache files containing data, content tables associated with the cache files, and an index of the content tables, which may be used by a local content manager to manage data in a client.
                          Content Tables
       Content tables are the guts of LCM. Each category ID
           will have its own content table, unless the
        TABLE_CAT_ID field is set in the category catalog
    (in order to share one table across several category IDs).
    Field
    Name      Type    Default Description
    INDEX     Binary  Key     Unique key for the data item record
                              (across all LCM tables). The key is
                              generated by the LCM.
    CAT_ID    L4      CAT.sub.--  The category ID of the item. This is the
                      ID item "content" category ID and not the fetch
                      was     category ID (see Category Table). This
                      fetched value is supplied by the fetch engine if
                      using   nothing is specified in the wrapper.
    SEARCH-   String8 Search- The Searchstring specifies what Search-
    STRING            string  string, if any, was used to fetch this item.
                      item    This field is necessary so that the client
                      was     can select items for a specific
                      fetched search-sting (generating article lists
                      using   for listboxes, deleting items after
                              personalization, etc.).
    URL       String8 --      Only used for web-fetched category Ids,
                              this is the absolute URL that this data
                              item was fetched from. (Need to keep
                              verified - conditional get - state
                              per session).
    MD5       Binary  --      The MD5 checksum of the data item (not
                              including the wrapper). Needs to be
                              generated by the feed (to allow for
                              item-based fetching). Always on the
                              UNCOMPRESSED data.
    ARTI-     Binary  --      Article_IDs are a property of the data
    CLE.sub.--                  item and set by the feed. The MD5 check-
    ID_MD5                    sum (hexadecimal) of the Article ID is
                              used instead of the Article ID string itself
                              as an optimization. If just the Article ID
                              string is specified in the wrapper, then
                              the client will convert it to an MD5
                              before inserting in the LCM.
    CHIL-     Binary  --      List of database keys for the children of
    DREN                      this item (20 bytes each, no delimiter).
                              List is used to overwrite expires
                              times from parent
    MIME.sub.--  String8 --      The MIME type of the data item. (Needs
    TYPE                      to be specified in the wrapper so that
                              the client can decide whether to fetch
                              children. For example, the viewer may
                              not want audio clips automatically
                              downloaded.)
    LOCALE    L4              ID of the Win32 locale this category is
                              intended for.
    CHAR-     L4              ID of the charset content for this
    SET                       category uses.
    CREA-     TimeT   Time    Can be server supplied. If not in the
    TION.sub.--          of      wrapper, the time at which the item was
    TIME              fetch   inserted in the LCM will be used.
    EXPIRA-   TimeT   Crea-   Values: 0.vertline.FFFFFF.vertline.Value
    TION.sub.--          tion.sub.--  The time to make A value of 0 is a
     "kill,"
    DATE              Time +  this item will be deleted. A value of
                      Life-   FFFFFF means "archive." Unless
                      span    the expiration date is modified, this item
                              will never be deleted.
    SIZE      L4      --      The size, in bytes, of the STORED
                              data item (sans wrapper).
    TITLE     String-         The string to be used for the item in the
              8 --            article listbox and for the Headline
                              actor in the SmartScreen
    SHOW.sub.--  L4      --      A numeric value specifying what order the
    ORDER                     sorting priority of the item is. If not
                              explicitly defined in the wrapper, this field
                              is left blank. To build an ordered list,
                              the channel would sort in descending order
                              (higher values should be higher on the list)
                              on Show_Order as the first key
                              and descending order on Creation_Date
                              as the second key.
    ACTORS    String8         This is a list of content IDs and what actor
                              types are available for each. Please see the
                              PCN_ACTORS section of this spec
                              for more detail.
                              Syntax:
                              <content ID>= <name>[,
                              <name> . . . ]
                              [&<content ID>= <name> [,
                              <name> . . . ] . . . ]
    *AC-      L4              Bitmask of sorted content IDs indicating
    TORS.sub.--                  which content IDs have been played.
    SHOWN
    *READ     Bool-   0       A flag that marks whether the item was
              ean             displayed in the client. The icon for this
                              item in the article listbox will vary
                              depending on this flag.
    [Reserved
    Fields]
    * = User-specific fields. Will eventually be moved to separate tables
     (necessary for shared or networked LCM).


Using the LCM

Here are the interfaces:
    ///////////////////////////////////////////////////////////////////////////
    //
    //
    // PCNTable
    //
    #define PCNTABLE_METHODS (IPURE)
        .backslash.
        XPMethod (SetColumns)
        .backslash.
            (PPCNPropTagArray        lpPropTagArray,
        .backslash.
            UInt32                       ulFlag) IPURE;
        .backslash.
        XPMethod (GetRowCount)
        .backslash.
            (UInt32                      ulFlags
            .backslash.
            UInt32 FAR *             lpulCount) IPURE;
        .backslash.
        XPMethod(FindRow)
            .backslash.
            (LPSPCNRestriction       lpRestriction,
        .backslash.
            UInt32                       ulFlags) IPURE;
        .backslash.
        XPMethod(SortTable)
        .backslash.
            (LPSPCNSortOrderSet      lpSortCriteria,
        .backslash.
            ULONG                        ulFlags) IPURE;
            .backslash.
        XPMethod(QueryRows)
        .backslash.
            (LONG                        lRowCount,
            .backslash.
            UInt32                       ulFlags,
            .backslash.
            LPSPCNRowSet FAR *     lppRows) IPURE;
    class PCNTable : public XPUnknown
    {
    public:
        PCNTABLE_METHODS (XPPURE);
    };
    #define LCM_CREATE           0x00000001L
    ///////////////////////////////////////////////////////////////////////////
    //
    //
    // PCNCache
    //
    #define PCNCACHE_METHODS(IPURE)
            .backslash.
        XPMethod (ItemFromURL) (
                .backslash.
                                     IN UInt32 ulFlags,
                         .backslash. IN LPCSTR szURL,
                                     OUT PPCNCacheItem *
                                     ppcacheitm)
    IPURE; .backslash.
        XPMethod (AddItemFromFile) (
            .backslash.
                                 IN UInt32 ulFlags,
                         .backslash.
                                 IN PPCNProp pProp,
                         .backslash.
                                 IN LPCSTR szFile,
                         .backslash.
                                 OUT PPCNCacheItem *ppcacheitm)
                                 IPURE;
        .backslash.
        XpMethod (ItemFromIndex) (
                .backslash.
                                      IN UInt32 ulFlags,
                          .backslash.
                                      IN UInt32 ulcatid,
                          .backslash.
                                      IN REFLCMKEY puuidIndex,
                .backslash.
                                      OUT PPCNCacheItem *
                                      ppcacheitm)
    IPURE; .backslash.
        XPMethod (GetTable) (
                .backslash.
                                     IN UInt32 ulcatid,
                         .backslash.
                                     OUT PCNTable ** pptbl)
                                     IPURE;
    class PCNcache : public XPUnknown
    {
    public:
        PCNCACHE_METHODS(XPPURE);
    };
    ///////////////////////////////////////////////////////////////////////////
    //
    //
    // PCNCacheItem
    //
    #define PCNCACHEITEM_METHODS(IPURE)
        .backslash.
        XPMethod (GetStream) (
                .backslash.
                                      IN UInt32 ulReserved,
                .backslash.
                                      IN UInt32 ulFlags,
                          .backslash.
                                      IN XPIIDREF refiid,
                          .backslash.
                                      OUT PPCNStream * ppstm)
                                      IPURE;
                .backslash.
        XPMethod (Lock) (
                         .backslash.
                                     IN UInt32 ulReserved) IPURE;
            .backslash.
        XPMethod (Unlock) (
                .backslash.
                                     IN UInt32 ulReserved) IPURE;
            .backslash.
        XPMethod (SaveChanges) (
                .backslash.
                                     IN UInt32 ulReserved) IPURE;
    class PCNCacheItem : public PCNProp
    {
    public:
        PCNCACMEITEM_METHODS(XPPURE);
    };
    enum { eRead, eTitle, eExpTime, eCreatTime, eSize, eURL, eMDS,
                eDBIndex, eContentType, eCatId, eShowOrder,
                eArtIdMDS, eChldKeys, eChnlStr1, eChnlStr2,
                eChnlBin1, eChnlBin2, eChnlInt1, eChnlInt2,
                eActorTypes, eFileId};
    #define NUMLCMVARSIZEPROPS 8
    #define LCMVARSIZEPROPS             .backslash.
    {                                           .backslash.
        8                                       .backslash.
        {                                       .backslash.
            XPR_TITLE                        ,.backslash.
            XPR_URL                          ,.backslash.
            XPR_CHLD_KEYS                ,.backslash.
            XPR_CHANNEL_DATA_STR1            ,.backslash.
            XPR_CHANNEL_DATA_STR2            ,.backslash.
            XPR_CHANNEL_DATA_BIN1            ,.backslash.
            XPR_CHANNEL_DATA_BIN2            ,.backslash.
            XPR_ACTOR_TYPES                     .backslash.
        }                                       .backslash.
    }


Accessing a Data Item in the LCM through the Localhost Server

To enable the use of third-party browsers to render our articles, a localhost server will become part of the client. The localhost server in the 2.0 client will respond to three different request types:

MD5 - The combination of category id and MD5 checksum can uniquely identify any LCM data item (actually, just the MD5 is enough to uniquely identify a data item, however the category ID is needed by LCM to select the correct table). By requesting a URL with the following syntax, any LCM item can be accessed from a browser.
                       address>/v1?catid=<category id>&md5=<md5
        checksum>


PointCast content will use root-level URLs for child references (images, etc.) because the LCM localhost could use any port (or any IP, for that matter, in the case of a diskless workstation). For example, a PCNFILE-style image from a 1.x feed would now use the following URL.
        <IMG SRC = "/v1? catid=1011&md5=1234567890ABCDF01234">
     URL - While URLs are not as unique as MD5s (they're unique at any
    point in time, but not over time), they are a very commonly used way
    of address data. In addition, for any content that comes from the web
    rather than the Data Center, MD5s won't be available. For
    these reasons, LCM items can also be accessed using their URL
    with the following syntax:
                       id>&url=<URL-encoded URL>


By using different category IDs, many different web caches can be created. The PointCast 2.0 client will have three, one for the browser, one for the corporate channel, and one for the Connections channel. The equivalent example
        <IMG SRC = "/v1?catid=120&url=
        http%3A%2F%2Fwww%2Epointcast%2Ecom%2Fimages%-
        2Freuter%2Egif">
    would retrieve the image that originally came from:
        http://www.pointcast.com/images/reuter.gif


PCNEXEC - PCNEXEC commands were used in the 1.x client to force the client to perform some action based on clicking a link in the browser or animation. Because the old PCNEXEC was done at the protocol level, it needs to be modified in 2.0 to support localhost. The new syntax will be:

FIG. 17 shows a block diagram a local content management system including relationships between channels, a renderer, a smartscreen, an actor table, a local host server, content tables, a category table, a fetch engine, a fetch item table, and filters.

C. Fetching and the Local Content Manager
                         Fetch Item Table
       The Fetch Item table keeps a list of items to fetch,
     instructions for fetching them, and the state for each.
        Items are created in the Fetch Item table through
      personalization. When a viewer personalizes a channel,
          what they're really doing is choosing a set of
        category ID and search-string pairs that they wish
        to "subscribe" to. For each unique combination of
          CAT_ID and SEARCHSTRING, a new record will be
                 created in the Fetch Item table.
    Field
    Name      Type    Default Description
    INDEX     Binary  Key     Unique key for record
    CAT_ID    L4      KEY     Uniquely identifies the category. This
                              cat.sub.--id will be used throughout the client
     and
                              Data Center to identify content belonging
                              to this category.
    SEARCH-   String8 --      The search-string to use in requesting the
    STRING                    item. For a LastID fetch (see Request.sub.--
                              Type in the Category table) this fleld can
                              be blank or provided by a channel based
                              on personalization (i.e. MSFT, if a viewer
                              as added Microsoft to the Companies
                              channel). For the Web Request_Type,
                              the search-string will be the URL
                              to update.
    FETCH.sub.--  String8 LastID  Values:
    TYPE                      LastID.vertline.MD5
     .vertline.ArticleID.vertline.Web.vertline.Pre-
                              filter.vertline.PCNItem
                              Describes the syntax that will be used to
                              update this category.
                              LastID - The "traditional" syntax.
                              See PCN_HTTP for more detail.
                              MD5 - A new method that allows for
                              requesting items individually. The syntax
                              is outlined in a later section.
                              ArticleID - A new method that allows for
                              requesting items individually by type. The
                              syntax is outlined in a later section.
                              Web - Used for any category that is up-
                              dated from a web server using
                              standard URLs.
                              Prefilter - Instantiates the Filter for the
                              fetch item only (no data is requested or
                              transmitted before the filter is called).
                              PCNItem - Used for backward compatabil-
                              ity with old-style custom fetch items
                              (admin items, weather, etc.)
    FILTER    GUID            Filter to call for this fetch item. (see
                              Filters section)
    CHAN-     L4              Used to notify channel when fetching for
    NEL_ID                    this item is completed and for knowing
                              where in the table to start a fetch so
                              that the active channel is updated first.
    CATE-     String8         Reserved for use by the Actor iterator
    GORY                      code (see tbe Dynamic Actors spec).
    FETCH.sub.--  L4              Reserved for use in specifying relative
    ORDER                     fetch order of items (either inter-channel,
                              intra-channel, or both).
    FETCH.sub.--  Sring8          Text string to show in menu bar while
    MES-                      fetching. Needs to support variable
    SAGE                      substitution for SearchString.
                              For example, the company news category
                              would have "<Searchstring> News" which
                              would turn into "Getting AAPL News_"
                              in the title bar.
    DATA.sub.--  String8    1    An ordered list of Data Centers from
    CEN-                      which this category can be fetched.
    TER_ID                    Data Centers are identified to the
                              client through a set of *.dc files
                              that contain a list of IP addresses and
                              basic properties of a Data Center.
    IN-       Boolean    0    Should the registration ID be included in
    CLUDE.sub.--                  the syntax of requests for this category
    REG_ID                    ID? This field only applies to the
                              Request_Types LastID and MD5
                              and not to Web. Including the registration
                              ID makes a request unique, loggable,
                              and uncacheable.
    NUM.sub.--  L4        10    The number of items that the client should
    ITM                       request for this category. Used for LastID
                              fetches only.
    AU-       String8 --      Username and encrypted password.
    THEN-                     Needed for fetching content that uses
    TICA-                     HTTP challenge authentication. The value
    TION                      is stored exactly as it appears in the
                              HTPP header (password encrypted).
    EXPIRA-   String8 Number  Values: Lifespan.vertline.Num_Keep
    TION                      Lifespan - Use only the expires value to
    POLICY                    expire content
                              Num_Keep - In addition to using the
                              expiration date, enforce the Num_Keep
                              value.
    LIFE-     L4      259200  The default lifespan for all data items
    SPAN                 0    fetched on this category in seconds. That
                              is, if the content itself does not carry an
                              expires time it's expires time will
                              default to the time it was fetched plus
                              this lifespan value.
    NUM.sub.--  L4        25    The number of items that should be kept
    KEEP                      in the LCM for any entry in the Fetch
                              Item table. This entry is used by the
                              LCM whenever it needs to "cleant" a
                              table.
    LAST.sub.--  TimeT*  --      The time when this item was last
    UP-                       successfully updated (200-series
    DATED                     response).
    NEXT.sub.--  TimeT*  --      The time when this item will again be
    UPDATE                    ready for automatic updating. This value
                              is supplie by the Data Center.
    LAST.sub.--  L4         1    The value of the highest fidotag fetched
    ID                        for this item. The fidotag is a sequential
                              and incrementing database key that is
                              unique per data item within a category ID.
                              The fidotag for each data item is specified
                              in the data stream header (see PCN.sub.--
                              HTTP.doc). This field is not used for the
                              Web Request Type.
    *TimeT is the number of seconds since Jan 1,1970 GMT.
    NOTE:
    For more detail on specifically how some of these fields are used in
     fetching, please see Harry Collins' PCN_HTTP spec
     (n:
     .backslash.ped_pub.backslash.hcollins.backslash.docs.backslash.pcn_http.
     doc).


Category Catalog

The category catalog is a list of overrides to values in the fetch item table that is fetched from the Data Center. This Data Center-side control extends to the ability to turn category IDs off by changing their status.

The catalog itself is a series of HTML like tags--one per category ID. The HTML syntax is used so that backward and forward compatibility are easy to maintain because properties can be added or deleted without affecting existing clients. All of these fields are defined in the fetch item table except for ServerCatID and Status.

<CATEGORY

*CatID=

ServerCatID=

Status=

DataCenterID=

NumItm=

NumKeep=

IncludeRegID=

DefaultLifespan=

ExpirationPolicy=

>

</CATEGORY>

*=Required
    Field
    Name        Type    Default Description
    SERVER.sub.--  L4      ID      Specifies the category ID from which
    CAT.sub.--                  to fetch the item. By default, this is the
    ID                          same as the cat_id. However, the
                                category catalog can redirect the client
                                to fetch this category from anywhere,
                                although the client will still treat
                                all data fetched from the fetch_cat_id
                                as though it came from the original
                                cat_id.
    STATUS      String8 --      Values: Blocked
                                Blocked - The client will not fetch this
                                category until it receives a new category
                                catalog that does not block this
                                category.


Fetching
                    The Process
                    Fetch item
                     Pass to filter
                      Returns properties of file
                      List of fetch commamds
                       Process fetch commands
                        [fetch item]
                     Insert file and set properties
                    Finish item


Filters

Upon startup of the client, components of the client can register filters to process fetch items. Filters are called by the fetch engine to process data items after they've been fetched but before they're inserted into the content tables (or even before they're fetched, in the case of the Prefilter Fetch_Type). When a filter registers for a category ID it becomes responsible for sequencing the calls to any other filters that might be necessary and passing its results to the wrapper parser (if necessary) or inserting into the content tables.

HTML--Scans for images, changes their URLs to use LCM, and adds child fetch commands for them to the wrapper. Also needs to scan for the <TITLE> tag and put it in the wrapper (unless TITLE is already specified in the wrapper).

PPA--Turns PPA files into wrapper-based fetch catalogs.

ANM--Adds a wrapper with fetch commands for all non-embedded image files.

Content Wrapper

Content wrappers allow fetched data to communicate its properties, as well as its relationship to order data items. The content wrapper is created at the feed level and is not modified by the client. In fact, the content wrapper is not removed from the file once it is stored on disk so that the LCM tables can be thrown out and rebuilt from the content itself if necessary. Because the wrappers are not removed from the content, ALL wrapped content must be accessed through the LCM.

The format of the content wrapper is HTML (what else?) and is designed to be "invisible" to other browsers if the data item itself is HTML. The wrapper consists of a comment that gives the byte-offset of the "actual" data item and then a PCN_ITEM tag that may contain PCN_COMMAND tags as children.
          <!--[5-digit byte offset to where content begins]--!>
          <PCN_ITEM
            Type = Data.vertline.catalog
           Offset = [5-digit byte offset to where content begins]
           [Content table properties_. (see next section)]
           >
           <PCN_COMMAND
             Type = Child_Fetch.vertline.Force_Fetch.vertline.Set_Props
            [Content table properties_. (see next section)]
           </PCN_COMMAND>
          </PCN_ITEM>
          [Content_.]


5-digit byte offset--The byte-offset is an LCM optimization that also allows clients that don't support LCM a way to strip the wrapper without having to parse it. The five-digit number must be at bytes 5-9 of the file.

There are two types of PCN_ITEMs:

Data--If a PCN_ITEM tag is the Data type, its properties apply to the actual wrapped data item.

Catalog--Catalog is identical to Data except that it doesn't have any content--it is just a wrapper. Catalog PCN_ITEMS can be used for catalog fetching, issuing kills, reordering data items, etc.

There are three types of PCN_COMMANDs:

Child_Fetch--The child_fetch type is used to force the fetch of an item that is needed by the PCN_ITEM (i.e., an image in an article). Once the item is fetched, it is then added to the Children list of the PCN_ITEM (see Content Table). The PCN_COMMAND tag for a child MUST contain the CAT_ID and either the MD5 or the ARTICLE_ID_MD5, because these values are necessary for both checking to see if the item is already present, and if not, for fetching it.

Force_Fetch--Force_Fetch is identical to Child, except that the item is not added to the PCN_ITEM's list of children.

Set_Props--A Set_Props PCN_COMMAND updates the properties of the specified item. If the item is not present, no action is taken.

Wrapper Fetch Commands: MD5 and ArticleID fetching

To enable the effective fetching of individual items (the CHILD_FETCH and FORCE_FETCH PCN_COMMAND types), two new fetch

MD5 Fetching

MD5 requests can be bundled into single requests. Initially, there will only be one category ID used for this style of fetching. However, this category ID is in essence a "back door" for fetching any item based on its CAT_ID and MD5.

/FIDO-1/<special MD5 CatID>-1?cm+<Any CatID>_<MD5 of desired item>[+cm+<Any CatID><MD5 of desired item>_]

Article ID MD5 Fetching

This type of fetching works identically to MD5 fetching, however since Article IDs are not guaranteed to be unique, the service agent should always return the newest, and only the newest, item matching the request.

/FIDO-1/<special Article ID MD5 CatID>-1?cm+<Any CatID>_<MD5 of the Article ID of desired item[+cm+<Any CatID>_<MD5 of the Article>_]

D. Version Control

Overview