Abstract:
A method and computer program product for receiving, on a remote device, a data feed that includes a plurality of feed entries. The feed entries are processed to identify one or more page entries. The feed entries are processed to identify one or more object entries. At least a first and a second object entry, chosen from the one or more object entries, are associated with at least a first page entry chosen from the one or more page entries.

Description:
TECHNICAL FIELD 
       [0001]    This disclosure relates to feeds and, more particularly, to representing multi-attachment within feeds. 
       BACKGROUND 
       [0002]    Web feeds are used to distribute information to subscribers and visitors of a website. Various feed formats (e.g., RSS &amp; Atom) may be utilized to achieve the desired data distribution. Unfortunately, some feed formats are limited in the manner in which data may be distributed. For example, problems are often encountered when trying to distribute pages that include a plurality of attachments (i.e., data objects) that are related to each other in some way yet need to be dispersed throughout the feed. 
         [0003]    Specifically, a page represented by an Atom feed may be made up of multiple feed entries within the Atom feed, wherein each feed entry within the feed represents a data object within the page (e.g., an attachment). Unfortunately, for such an Atom feed, there is no way to reconstruct the original page composition if the original page included multiple data objects (e.g., attachments, fields, and/or metadata) and such given objects were dispersed throughout the feed rather than within a single holding object. 
       SUMMARY OF DISCLOSURE 
       [0004]    In a first implementation, a method includes receiving, on a remote device, a data feed that includes a plurality of feed entries. The feed entries are processed to identify one or more page entries. The feed entries are processed to identify one or more object entries. At least a first and a second object entry, chosen from the one or more object entries, are associated with at least a first page entry chosen from the one or more page entries. 
         [0005]    One or more of the following features may be included. A data page may be generated based, at least in part, upon the first and the second object entry and the first page entry. At least one of the object entries may define a data object to be associated with the data page. The data object may be an attachment. The data object may be a data field. 
         [0006]    The data feed may be an RSS feed. The data feed may be an ATOM feed. The first page entry may include a master entry ID. The first and second object entries may each include a slave entry ID that is associated with the master entry ID. The slave entry ID may include at least a portion of the master entry ID. 
         [0007]    In another implementation, a computer program product resides on a computer readable medium that has a plurality of instructions stored on it. When executed by a processor, the instructions cause the processor to perform operations including receiving, on a remote device, a data feed that includes a plurality of feed entries. The feed entries are processed to identify one or more page entries. The feed entries are processed to identify one or more object entries. At least a first and a second object entry, chosen from the one or more object entries, are associated with at least a first page entry chosen from the one or more page entries. 
         [0008]    One or more of the following features may be included. A data page may be generated based, at least in part, upon the first and the second object entry and the first page entry. At least one of the object entries may define a data object to be associated with the data page. The data object may be an attachment. The data object may be a data field. 
         [0009]    The data feed may be an RSS feed. The data feed may be an ATOM feed. The first page entry may include a master entry ID. The first and second object entries may each include a slave entry ID that is associated with the master entry ID. The slave entry ID may include at least a portion of the master entry ID. 
         [0010]    The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]      FIG. 1  is a diagrammatic view of a feed generation process and feed reading processes coupled to a distributed computing network; 
           [0012]      FIG. 2  is a diagrammatic view of a display screen rendered by a client electronic device; 
           [0013]      FIG. 3  is a diagrammatic view of a web feed generated by the feed generation process of  FIG. 1 ; 
           [0014]      FIG. 4  is a flowchart of the feed generation process of  FIG. 1 ; and 
           [0015]      FIG. 5  is a flowchart of the feed reading process of  FIG. 1 . 
       
    
    
       [0016]    Like reference symbols in the various drawings indicate like elements. 
       DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     System Overview: 
       [0017]    Referring to  FIG. 1 , there is shown feed generation process  10  that may reside on and may be executed by server computer  12 , which may be connected to network  14  (e.g., the Internet or a local area network). Examples of server computer  12  may include, but are not limited to: a personal computer, a server computer, a series of server computers, a mini computer, and a mainframe computer. Server computer  12  may be a web server (or a series of servers) running a network operating system, examples of which may include but are not limited to: Microsoft Windows XP Server™; Novell Netware™; or Redhat Linux™, for example. 
         [0018]    As will be discussed below in greater detail, feed generation process  10  may process a data page to be provided to one or more remote devices via a data feed. Feed generation process  10  may determine if the data page includes two or more data objects. If so, a page entry for the data page may be defined and an object entry for at least one of the data objects included within the data page may be defined, wherein the object entry is associated with the page entry. 
         [0019]    The instruction sets and subroutines of feed generation process  10 , which may be stored on storage device  16  coupled to server computer  12 , may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer  12 . Storage device  16  may include but is not limited to: a hard disk drive; a tape drive; an optical drive; a RAID array; a random access memory (RAM); and a read-only memory (ROM). 
         [0020]    Server computer  12  may execute a web server application, examples of which may include but are not limited to: Microsoft IIS™, Novell Webserver™, or Apache Webserver™, that allows for HTTP (i.e., HyperText Transfer Protocol) access to server computer  12  via network  14 . Network  14  may be connected to one or more secondary networks (e.g., network  18 ), examples of which may include but are not limited to: a local area network; a wide area network; or an intranet, for example. 
         [0021]    Server computer  12  may execute syndication application  20 , examples of which may include but are not limited to IBM Workplace Web Content Management™. Syndication application  20  may allow for the transferring of information via data feeds, such as RSS feeds and Atom feeds to one or more feed reading processes  22 ,  24 ,  26 ,  28 , examples of which may include but are not limited to Google Reader™ and NewsGator™. Feed generation process  10  may be a stand alone application that interfaces with syndication application  20  or an applet/application that is executed within syndication application  20 . 
         [0022]    The instruction sets and subroutines of syndication application  20 , which may be stored on storage device  16  coupled to server computer  12  may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer  12 . 
         [0023]    The instruction sets and subroutines of feed reading processes  22 ,  24 ,  26 ,  28 , which may be stored on storage devices  30 ,  32 ,  34 ,  36  (respectively) coupled to client electronic devices  38 ,  40 ,  42 ,  44  (respectively), may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into client electronic devices  38 ,  40 ,  42 ,  44  (respectively). Storage devices  30 ,  32 ,  34 ,  36  may include but are not limited to: hard disk drives; tape drives; optical drives; RAID arrays; random access memories (RAM); read-only memories (ROM), compact flash (CF) storage devices, secure digital (SD) storage devices, and memory stick storage devices. Examples of client electronic devices  38 ,  40 ,  42 ,  44  may include, but are not limited to, personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 , a server (not shown), a data-enabled, cellular telephone (not shown), and a dedicated network device (not shown). Using feed reading processes  22 ,  24 ,  26 ,  28 , users  46 ,  48 ,  50 ,  52  (respectively) may access feeds provided by syndication application  20 . 
         [0024]    Users  46 ,  48 ,  50 ,  52  may access syndication application  20  directly through the device on which the feed reading process (e.g., feed reading processes  22 ,  24 ,  26 ,  28 ) is executed, namely client electronic devices  38 ,  40 ,  42 ,  44 , for example. Users  46 ,  48 ,  50 ,  52  may access syndication application  20  directly through network  14  or through secondary network  18 . Further, server computer  12  (i.e., the computer that executes syndication application  20 ) may be connected to network  14  through secondary network  18 , as illustrated with phantom link line  54 . 
         [0025]    The various client electronic devices may be directly or indirectly coupled to network  14  (or network  18 ). For example, personal computer  38  is shown directly coupled to network  14  via a hardwired network connection. Further, notebook computer  44  is shown directly coupled to network  18  via a hardwired network connection. Laptop computer  40  is shown wirelessly coupled to network  14  via wireless communication channel  56  established between laptop computer  40  and wireless access point (i.e., WAP)  58 , which is shown directly coupled to network  14 . WAP  58  may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/or Bluetooth device that is capable of establishing wireless communication channel  56  between laptop computer  40  and WAP  58 . Personal digital assistant  42  is shown wirelessly coupled to network  14  via wireless communication channel  60  established between personal digital assistant  42  and cellular network/bridge  62 , which is shown directly coupled to network  14 . 
         [0026]    As is known in the art, all of the IEEE 802.11x specifications may use Ethernet protocol and carrier sense multiple access with collision avoidance (i.e., CSMA/CA) for path sharing. The various 802.11x specifications may use phase-shift keying (i.e., PSK) modulation or complementary code keying (i.e., CCK) modulation, for example. As is known in the art, Bluetooth is a telecommunications industry specification that allows e.g., mobile phones, computers, and personal digital assistants to be interconnected using a short-range wireless connection. 
         [0027]    Client electronic devices  38 ,  40 ,  42 ,  44  may each execute an operating system, examples of which may include but are not limited to Microsoft Windows™, Microsoft Windows CE™, Redhat Linux™, or a custom operating system. 
       The Feed Generation Process: 
       [0028]    For the following discussion, feed reading process  22  is going to be described for illustrative purposes. However, this is not intended to be a limitation of this disclosure, as other feed reading processes (e.g., feed reading processes  24 ,  26 ,  28 ) may be equally utilized. 
         [0029]    Referring also to  FIGS. 2 &amp; 3  and as discussed above, feed generation process  10  may process  100  a data page (such as a TeamSpace™ page) to be provided to one or more remote devices (e.g., client electronic devices  38 ,  40 ,  42 ,  44 ) via a data feed (e.g., an RSS feed or an ATOM feed). As is known in the art, a TeamSpace may be a web-based collaborative workspace system for managing shared work processes and maintaining shared artifacts in a project that may span months/years. A TeamSpace may cover both synchronous and asynchronous cross-company team activities and may provide a seamless transition between various work modes. 
         [0030]    Feed reading process  22  may allow user  46  to browse through various sites (e.g. websites and team spaces) so that user  46  may subscribe to one or more web feeds. For example, using feed reading process  22 , user  46  may browse team space  100  (i.e. “Tony&#39;s Team Page”). Team space  100  may include menu bar  102  that allows user  46  to select from a plurality of sub pages, such as “Home”, “Discussion”, “Library”, “Calendar”, “Tasks”, “Index”, “Customize”, and “Members”. Team space  100  may include subscription button  104  that allows user  46  to subscribe to web feed  150 . 
         [0031]    As discussed above, web feeds may be used to distribute information to subscribers and visitors of a website. Accordingly, web feed  150  may be used to distribute information available on team space page  100 . For example, team space page  100  is shown to include three files available for download, namely: Test_Image.gif; Error_Log.txt; and Chicago_Slideshow.PPT. Accordingly, through the use of web feed  150 , user  46  may receive content distributed by e.g. team space page  100 , including but not limited to the three files available for download, namely: Test_Image.gif; Error_Log.txt; and Chicago_Slideshow.PPT. 
         [0032]    While the content distributor is described above is being team space page  100 , this is for illustrative purposes only and is not intended to be a limitation of this disclosure, as other configurations are possible. For example, the content distributor may be a news website, a blog site, or a social networking website. 
         [0033]    As discussed above, various feed formats (e.g., RSS &amp; Atom) may be utilized to achieve the desired data distribution. Unfortunately, for certain feed types (e.g., Atom feeds), it is not possible to reconstruct “complex” pages (i.e., pages that include multiple data objects, such as attachments, fields, metadata, etc). Accordingly, as team space page  100  includes three attachments, this is a “complex” page that may be difficult to reconstruct when transmitted using various feed formats. 
         [0034]    Accordingly and referring also to  FIG. 4 , when a user (e.g. user  46 ) selects subscription button  104 , thus indicating that (in this particular example) user  46  wishes to subscribe to a web feed of team space page  100 , feed generation process  10  may process  200  team space page  100  (i.e. the page that is to be provided to the remote devices (e.g. personal computer  38 ) via data feed  150 ) to determine  202  whether team space page  100  includes two or more data objects. In the event that team space page  100  does not include multiple objects, feed generation process  10  may publish  204  a feed of the data included within team space page  100 . However and as discussed above, since team space page  100  includes a plurality of attachments, namely: Test_Image.gif  106 ; Error_Log.txt  108 ; and Chicago_Slideshow.PPT  110 , team space page  100  does indeed include two or more data objects. 
         [0035]    Accordingly, upon feed generation process  10  determining  202  that team space page  100  includes multiple objects, feed generation process  10  may define  206  a page entry for the data page (i.e. team space page  100 ) and may define  208  an object entry for each of the data objects included within team space page  100  (i.e. Test_Image.gif  106 ; Error_Log.txt  108 ; and Chicago_Slideshow.PPT  110 ). 
         [0036]    As is known in the art, web feeds (e.g. web feed  150 ) may include a plurality of feed entries. Therefore, when publishing web feed  150 , feed generation process  10  may include, within web feed  150 , the page entry defined  204  for team space page  100  and the object entries defined  206  for Test_Image.gif  106 ; Error_Log.txt  108 ; and Chicago_Slideshow.PPT  110 . 
         [0037]    For illustrative purposes, web feed  150  is shown to include the four above-described feed entries, namely page entry  152  (which corresponds to team space page  100 ), object entry  154  (which corresponds to Test_Image.gif  106 ), object entry  156  (which corresponds to Error_Log.txt  108 ), and object entry  158  (which corresponds to Chicago_Slideshow.PPT  110 ). When generating web feed  150 , feed generation process  10  may also include additional information  160 ,  162  that may be required to e.g. define the feed type, define the beginning of the feed, and define the end of the feed). 
         [0038]    Page entry  152  may define various aspects of team space page  100 , such as: the title of the page (“Tony&#39;s Team Page”); the publication date of the page; and the author of the page. Each of object entries  154 ,  156 ,  158  may define various aspects of the related data object, such as: the title of the data object; the publication date of the data object; and the author of the data object. 
         [0039]    When defining  208  the object entries (e.g., object entries  154 ,  156 ,  158 ), feed generation process  10  may associate each object entry defined within web feed  150  with the related page entry (e.g., page entry  152 ), thus allowing web feed  150  to be properly processed by feed reading process  22 . For example, each page entry (e.g. page entry  152 ) may include a master entry ID. Further, each object entry (e.g. object entries  154 ,  156 ,  158 ) may include a slave entry ID that is associated with the master entry ID, and the slave entry ID included within each object entry may include at least a portion of the master entry ID. 
         [0040]    For example and for illustrative purposes only, page entry  152  may include master ID entry  164  (i.e. 0F7F78B411663465852572DB00775018). Further, object entry  154  may include slave entry ID  166  (i.e. 0F7F78B411663465852572DB00775018.1); object entry  156  may include slave entry ID  168  (i.e., 0F7F78B411663465852572DB00775018.2); and object entry  156  may include slave entry ID  170  (i.e., 0F7F78B41166346585257DB00775018.3). In this example, slave entry IDs  166 ,  168 ,  170  are shown to be identical to master entry ID  164  with the exception that a suffix (e.g. “0.1”, “0.2”, “0.3”, respectively) was added to each of slave entry IDs  166 ,  168 ,  170 . Accordingly, the “root” portion (i.e. 0F7F78B411663465852572DB00775018) of each of slave entry IDs  166 ,  168 ,  170  is identical to that of master ID entry  164  (i.e. 0F7F78B411663465852572DB00775018). Accordingly, by using such a master entry ID/slave entry ID nomenclature, feed generation process  10  may associate each object entry (e.g., object entries  154 ,  156 ,  158 ) defined within web feed  150  with the related page entry (e.g., page entry  152 ). 
         [0041]    The above-described master entry ID/slave entry ID nomenclature is for illustrative purposes only and is not intended to be a limitation of this disclosure, as other configurations are possible. For example, instead of attaching a suffix to each of slave entry IDs  166 ,  168 ,  170 , an additional line item may be inserted into each of the corresponding object entries (namely object entries  154 ,  156 ,  158 ) that defines the associated page entry (namely page entry  152 ). 
         [0042]    Once web feed  150  is defined, feed generation process  10  and/or syndication application  20  may provide  210  web feed  150  (which includes page entry  152  and object entries  154 ,  156 ,  158 ) to one or more remote devices (e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 ). 
         [0043]    When providing web feed  150  (which includes page entry  152  and object entries  154 ,  156 ,  158 ) to e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 , feed generation process  10  and/or syndication application  20  may publish  212  web feed  150  to the remote devices. Accordingly, feed generation process  10  and/or syndication application  20  may transmit web feed  150  to e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 . 
         [0044]    Alternatively/additionally, when providing web feed  150  (which includes page entry  152  and object entries  154 ,  156 ,  158 ) to e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 , feed generation process  10  and/or syndication application  20  may enable availability  214  of web feed  150  to e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 . Accordingly, feed generation process  10  and/or syndication application  20  may allow users of e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44  to download/obtain a copy of web feed  150  (e.g. in a manner similar to that of a podcast). 
       The Feed Reading Process: 
       [0045]    For the following discussion, feed reading process  22  is going to be described for illustrative purposes. However, this is not intended to be a limitation of this disclosure, as other feed reading processes (e.g., feed reading processes  24 ,  26 ,  28 ) may be equally utilized. 
         [0046]    As discussed above, once web feed  150  is defined, feed generation process  10  and/or syndication application  20  may provide  210  web feed  150  (which includes page entry  152  and object entries  154 ,  156 ,  158 ) to one or more remote devices (e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 ). 
         [0047]    Referring also to  FIG. 5 , feed reading process  22  may receive  250  data feed  150  that was provided  210  by feed generation process  10  and/or syndication application  20 . As discussed above, data feed  150  may include a plurality of feed entries (e.g., feed entries  152 ,  154 ,  156 ,  158 ). 
         [0048]    Feed reading process  22  may process  252  the feed entries to identify one or more page entries. As discussed above and in this particular example, a page entry is any feed entry that defines a data page. In this particular example, feed entry  152  defines and corresponds to team space page  100 . Accordingly, when processing  252  the feed entries (e.g. feed entries  152 ,  154 ,  156 ,  158 ) included within data feed  150  to identify one or more page entries, feed reading process  22  may identify feed entry  152  as a page entry that corresponds to team space page  100 . 
         [0049]    Feed reading process  22  may process  254  the feed entries to identify one or more object entries. As discussed above, an object entry (e.g., object entries  154 ,  156 ,  158 ) may define various aspects of a data object, such as: the title of the data object; the publication date of the data object; and the author of the data object. In this particular example, object entry  154  corresponds to Test_Image.gif  106 , object entry  156  corresponds to Error_Log.txt  108 , and object entry  158  corresponds to Chicago_Slideshow.PPT  110 ; each of which is an attachment available for downloading via team space page  100 . 
         [0050]    As discussed above, when defining  208  the object entries (e.g., object entries  154 ,  156 ,  158 ), feed generation process  10  may associate each object entry defined within web feed  150  with the related page entry (e.g., page entry  152 ), thus allowing web feed  150  to be properly processed by feed reading process  22 . Accordingly, each page entry (e.g. page entry  152 ) may include a master entry ID; each object entry (e.g. object entries  154 ,  156 ,  158 ) may include a slave entry ID that is associated with the master entry ID; and the slave entry ID included within each object entry may include at least a portion of the master entry ID. 
         [0051]    Therefore, when processing data feed  150 , feed reading process  22  may process the various feed entries so that object entries may be associated  256  with page entries (if appropriate). For example, feed reading process  22  may examine the entry ID (e.g., master entry ID  164  and slave entry IDs  166 ,  168 ,  170 ) of each feed entry (e.g. feed entry  152 ,  154 ,  156 ,  158 ) to determine if an association  256  may be established between an object entry and a page entry. 
         [0052]    As discussed above and in this particular example, page entry  152  may include master ID entry  164  (i.e. 0F7F78B411663465852572DB00775018); object entry  154  may include slave entry ID  166  (i.e. 0F7F78B411663465852572DB00775018.1); object entry  156  may include slave entry ID  168  (i.e., 0F7F78B411663465852572DB00775018.2); and object entry  156  may include slave entry ID  170  (i.e., 0F7F78B411663465852572DB00775018.3). Further, slave entry IDs  166 ,  168 ,  170  are shown to be identical to master entry ID  164  with the exception that a suffix (e.g. “0.1”, “0.2”, “0.3”, respectively) was added to each of slave entry IDs  166 ,  168 ,  170 . Accordingly, the “root” portion (i.e. 0F7F78B411663465852572DB00775018) of each of slave entry IDs  166 ,  168 ,  170  is identical to that of master ID entry  164  (i.e. 0F7F78B411663465852572DB00775018). 
         [0053]    As discussed above, by using such a master entry ID/slave entry ID nomenclature, feed generation process  10  may associate each object entry (e.g., object entries  154 ,  156 ,  158 ) defined within web feed  150  with the related page entry (e.g., page entry  152 ). Accordingly, feed reading process  22  may examine the various entry IDs (e.g., master entry ID  164  and slave entry IDs  166 ,  168 ,  170 ) to determine which object entries are associated  256  with a particular page entry. In this particular example, each of object entries  154 ,  156 ,  158  are associated  256  with page entry  152 . 
         [0054]    As discussed above, the above-described master entry ID/slave entry ID nomenclature is for illustrative purposes only and is not intended to be a limitation of this disclosure, as other configurations are possible. For example, instead of attaching a suffix to each of slave entry IDs  166 ,  168 ,  170 , feed generation process  10  may insert an additional line item into each of the corresponding object entries (namely object entries  154 ,  156 ,  158 ) that defines the associated page entry (namely page entry  152 ). Accordingly, feed reading process  22  may be configured to look for such an alternative nomenclature. 
         [0055]    Once the appropriate associations  256  are defined, feed reading process  22  may generate  258  a data page (e.g. team space page  100 ) based, at least in part, upon associated  256  feed entries (e.g. page entry  152  and object entries  154 ,  156 ,  158 ). 
         [0056]    Accordingly, through the use of feed generation process  10 , a data feed (e.g., data feed  150 ) may be generated for a data page (e.g. team space page  100 ) that includes a plurality of data objects (e.g. Test_Image.gif  106 ; Error_Log.txt  108 ; and Chicago_Slideshow.PPT  110 ). This data feed (which includes page entry  152  and object entries  154 ,  156 ,  158 ) may then be provided  210  to one or more remote devices (e.g. personal computer  38 , laptop computer  40 , personal digital assistant  42 , notebook computer  44 ). Upon receiving  250  data feed  150 , feed reading process  22  may process data feed  150  to generate team space page  100  and the three associated data objects (e.g. Test_Image.gif  106 ; Error_Log.txt  108 ; and Chicago_Slideshow.PPT  110 ). 
         [0057]    A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made. Accordingly, other implementations are within the scope of the following claims.