The present invention relates generally to document management, and more specifically to tracking and organizing links between historical documents.
The development of the EDVAC computer of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs.
Every day, computer users are faced with the daunting task of managing and retrieving information from scores of e-mail messages, thousands of files on their personal computers and servers, and billions of Web pages. Managing this myriad of information from a multitude of sources is a difficult and time consuming task.
With the interconnected nature of our work today, many of these information sources are connected to each other and to other references via links. A prime example of such a link is the Uniform Resource Locator (URL). A URL provides the global address of documents and other resources on the World Wide Web. The first part of the address indicates what protocol to use, and the second part specifies the IP address or the domain name where the resource is located. Thus, URLs imply an important relationship between a source document and a destination document.
Currently, the only way to manage these relationships is through search algorithms/products such as Google™ Desktop Search or Google™ Pagerank. However, such solutions have an important shortcoming in that they only help to identify files after inputting one or more keywords. When results are received from such tools, it remains difficult to track which documents contain which links (URLs). Additionally, it is a challenge to remember where each link (URL) was referenced and to find its related documents. Manually organizing and saving all of the links (URLs) in a relevant presentation form is currently nearly impossible.
There is a need for a better technique to help users dynamically manage historical data within and between documents bearing one or more links, and retain the relationships defined by the links. The technique needs to track the links not just from source documents to destination documents, but from destination documents back to the source documents, organize the links in a hierarchical manner based on the content/naming of the links, and display the link information to the user in a real-time and meaningful way.
The present invention provides a method, apparatus and program product for managing historical data within and between documents bearing one or more links, and retaining the relationships defined by the links. The present invention tracks this information not just from source documents to destination documents, but also from the destination documents back to the source documents.
More specifically, the present invention provides a method for managing links within a plurality of documents. The method begins by opening a source document chosen from the plurality of documents, scans the source document for document links, and for each document link found, adds an entry to a link database indicating the name of the source document and the document link. In one embodiment, the method then scans the document pointed to by the document link for any relevant keywords, then if any are found, includes the relevant keywords in the link database via a keyword entry. The keyword entry includes the keyword itself, a source document name, and the document link of the document containing the relevant keyword. In one embodiment, the present invention then parses the source document for relevant keywords, searches for the keyword entries within the link database for any occurrences of the relevant keywords parsed from the source document, and creates a list of documents containing keywords matching the relevant keywords parsed from the source document. The user is then presented with a list of documents containing keywords matching the relevant keywords parsed from the source document (e.g., via a temporary bookmark folder or a split-screen view).
In another embodiment, the present invention searches the document link entries within the link database for any occurrences of the current source document, then creates a link of backward references for each entry found, which is then presented to the user (e.g., via a temporary bookmark folder or a split-screen view).
The source documents utilized by the present invention may take a number of forms, including, but not limited to, word processor documents, portable desktop format (PDF) files, e-mails, websites, instant messages and electronic notes.
The present invention may also organize the document links within a source document in a hierarchical manner based on the structure of the source document. In one embodiment, the present invention accomplishes this by creating a base bookmark folder, analyzes the structure of the source document in order to determine a logical grouping of the document links, creates link categories based on the logical grouping of documents links, parses the source document and link content for relevant keywords, and creating bookmark subfolders to the base bookmark folder based on the link subcategories, where the name for each bookmark subfolder is based up the relevant keywords.
Various embodiments of the present invention are hereinafter described in conjunction with the appended drawings:
It is to be noted, however, that the appended drawings illustrate only an example embodiment of the invention, and are therefore not considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Referring to the Drawing, wherein like numbers denote like parts throughout the several views,
The computer system 100 contains one or more programmable central processing units (CPUs) 101A, 101B, 101C, and 101D, herein generically referred to as a processor 101. In an embodiment, the computer system 100 contains multiple processors typical of a relatively large system; however, in another embodiment the computer system 100 may alternatively be a single CPU system. Each processor 101 executes instructions stored in the main memory 102 and may include one or more levels of on-chip cache.
The main memory 102 is a memory for storing data and programs. The main memory 102 is conceptually a single monolithic entity, but in other embodiments the main memory 102 is a more complex arrangement, such as a hierarchy of caches and other memory devices. For example, memory may exist in multiple levels of caches, and these caches may be further divided by function, so that one cache holds instructions while another holds non-instruction data, which is used by the processor or processors. Memory may be further distributed and associated with different CPUs or sets of CPUs, as is known in any of various so-called non-uniform memory access (NUMA) computer architectures.
The memory 102 includes a link manager 150, a link database 152, and a user interface page 154. Although the link manager 150, link database 152, and user interface page 154 are illustrated as being contained within the memory 102 in the computer system 100, in other embodiments some or all of them may be on different computer systems (e.g., on client 132) and may be accessed remotely, e.g., via the network 130. The computer system 100 may use virtual addressing mechanisms that allow the programs of the computer system 100 to behave as if they only have access to a large, single storage entity instead of access to multiple, smaller storage entities. Thus, while the link manager 150, the link database 152, and the user interface page 154 are illustrated as being contained within the main memory 102, these elements are not necessarily all completely contained in the same storage device at the same time.
In an embodiment, the link manager 150 includes instructions capable of executing on the processor 101 or statements capable of being interpreted by instructions executing on the processor 101 to perform the functions as further described below with reference to
The memory bus 103 provides a data communication path for transferring data among the processor 101, the main memory 102, and the I/O bus interface unit 105. The I/O bus interface unit 105 is further coupled to the system I/O bus 104 for transferring data to and from the various I/O units. The I/O bus interface unit 105 communicates with multiple I/O interface units 111, 112, 113, and 114, which are also known as I/O processors (IOPs) or I/O adapters (IOAs), through the system I/O bus 104. The system I/O bus 104 may be, e.g., an industry standard PCI bus, or any other appropriate bus technology.
The I/O interface units support communication with a variety of storage and I/O devices. For example, the terminal interface unit 111 supports the attachment of one or more user terminals 121, 122, 123, and 124. The storage interface unit 112 supports the attachment of one or more direct access storage devices (DASD) 125, 126, and 127 (which are typically rotating magnetic disk drive storage devices, although they could alternatively be other devices, including arrays of disk drives configured to appear as a single large storage device to a host). The contents of the main memory 102 may be stored to and retrieved from the direct access storage devices 125, 126, and 127.
The I/O and other device interface 113 provides an interface to any of various other input/output devices or devices of other types. Two such devices, the printer 128 and the fax machine 129, are shown in the exemplary embodiment of
Although the memory bus 103 is shown in
The computer system 100 depicted in
The network 130 may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data and/or code to/from the computer system 100. In various embodiments, the network 130 may represent a storage device or a combination of storage devices, either connected directly or indirectly to the computer system 100. In an embodiment, the network 130 may support Infiniband. In another embodiment, the network 130 may support wireless communications. In another embodiment, the network 130 may support hard-wired communications, such as a telephone line or cable. In another embodiment, the network 130 may support the Ethernet IEEE (Institute of Electrical and Electronics Engineers) 802.3x specification. In another embodiment, the network 130 may be the Internet and may support IP (Internet Protocol). In another embodiment, the network 130 may be a local area network (LAN) or a wide area network (WAN). In another embodiment, the network 130 may be a hotspot service provider network. In another embodiment, the network 130 may be an intranet. In another embodiment, the network 130 may be a GPRS (General Packet Radio Service) network. In another embodiment, the network 130 may be a FRS (Family Radio Service) network. In another embodiment, the network 130 may be any appropriate cellular data network or cell-based radio network technology. In another embodiment, the network 130 may be an IEEE 802.11B wireless network. In still another embodiment, the network 130 may be any suitable network or combination of networks. Although one network 130 is shown, in other embodiments any number (including zero) of networks (of the same or different types) may be present.
The client 132 includes a browser 134. The browser 134 downloads the user interface page 154, interprets the control tags and data in the user interface page 154, and executes or interprets a script 156 residing within the user interface page 154. The browser 134 and the script 156 may include instructions or statements capable of being executed on an unillustrated processor, analogous to the processor 101, or interpreted by instructions executing on the unillustrated processor in the client 132, in order to perform the functions as further described below with reference to
Although the browser 134, the link manager 150, the link database 152, the user interface page 154, and the script 156 are illustrated as being separate elements, in other embodiments the functions of some or all of them may be combined. For example, in an embodiment, some or all of the browser 134, the user interface page 154, and the script 156 are not present or not used, and their functions are performed by the link manager 150. Link manager 150 may also interact directly with browser 134, or files used by the browser (e.g., bookmark files, or other types of user defined menu entities).
It should be understood that
The various software components illustrated in
Moreover, while embodiments of the invention have and hereinafter will be described in the context of fully functioning computer systems, the various embodiments of the invention are capable of being distributed as a program product in a variety of forms, and the invention applies equally regardless of the particular type of signal-bearing medium used to actually carry out the distribution. The programs defining the functions of this embodiment may be delivered to the computer system 100 and/or the client 132 via a variety of signal-bearing media, which include, but are not limited to:
(1) information permanently stored on a non-rewriteable storage medium, e.g., a read-only memory device attached to or within a computer system, such as a CD-ROM, DVD-R, or DVD+R;
(2) alterable information stored on a rewriteable storage medium, e.g., a hard disk drive (e.g., the DASD 125, 126, or 127), CD-RW, DVD-RW, DVD+RW, DVD-RAM, or diskette; or
(3) information conveyed by a communications medium, such as through a computer or a telephone network, e.g., the network 130, including wireless communications.
Such signal-bearing media, when carrying machine-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.
In addition, various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. But, any particular program nomenclature that follows is used merely for convenience, and thus embodiments of the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
The exemplary environments illustrated in
At block 208, it is determined if a search for relevant keywords should be performed on the documents pointed to by the document links. In one embodiment, this is a user selectable option within the web browser. If not, control passes to block 214. If so, control passes to block 210 where the relevant keywords are identified in the documents pointed to by the document links (i.e. destination documents). An entry is then added to the link database 152 for each relevant keyword entry, the entry comprising the keyword, a source document name and the document link of the destination document containing the relevant keyword, as shown at block 212. If the same destination document has been opened previously, the existing link database entries are updated to reflect any changes since the last time the document was opened, as shown at block 213. The method ends at block 214.
At block 310, it is determined if the user wishes to create a list of documents containing keywords matching the relevant keywords parsed from the source document. In one embodiment, this is a user selectable option within the web browser. If not, control passes to block 320. If so, the current source document is parsed in order to determine relevant keywords, as shown at block 312. At block 314, the keyword entries of the link database 152 are searched for any occurrences of the relevant keywords parsed from the source document. At block 316, a list of documents containing keywords matching the relevant keywords are parsed from the source document. At block 318, the user is presented with the list of documents containing keywords matching the relevant keywords parsed from the source document, typically via a temporary bookmark folder or via a split screen view. Other methods of presenting the list of documents containing keywords matching the relevant keywords parsed by the source document are contemplated, and fall within the scope and spirit of the present invention. The method ends at block 320.
The method of
In one embodiment of the present invention, when source document 400 is opened by browser 134, the source document is first scanned for appropriate document links by link manager 150. In this instance, there are several document links (URLs) 404A-404H present within the source document 400. For each document link (URL) 404A-404H found in the source document 400, link manager 150 adds an entry to link database 152 indicating the name of the source document (e.g., the URL for the current source document) and the URL of the destination document. Link database 152 is described in more detail in
In one embodiment of the present invention, the destination documents pointed to by document links (URLs) may be scanned for relevant keywords. One potential way to automatically determine relevant keywords within destination documents is to examine the destination documents for words or terms that are repeatedly used. If a word or phrase is repeatedly used within the destination document, it can then be identified as a relevant keyword. Another technique to determine relevant keywords is to examine the font size and/or bolding of text within the destination document. Words that appear in a relatively larger typeface or font size, or that exist within bold text can be also identified as relevant keywords. Several other methods for the identification of a set of relevant keywords within the destination document can be practiced, and still remain within the spirit and scope of the present invention. Once the relevant keywords have been determined, an entry containing the keyword, the destination document and the associated source document is added to the link database 152. This is more fully described in
By way of example, referring back to
Link manager 150 may also parse the destination documents for relevant keywords to include in the link database 152, as previously described.
Once the link database 152 has entries, when a new source document is opened, the link manager 150 searches the destination document identifier 504 field within the link database 152 for the presence of the current source document. This is done in order to find any documents that reference the currently opened source document. In other words, backward references to the current document are identified (i.e., the source document identifier 502 field), including only documents which the user has previously visited. Link manager 150 creates a list of such backward references, and presents this list of backward references to the user. Various mechanisms may be employed for presenting the list of backward references to the user, including, but not limited to the use of a temporary bookmark folder within the browser 134, and a user-activated split screen view.
By way of example, assume that the user has visited the Boston RED SOX website previously illustrated in
In one embodiment of the present invention, when the link database 152 has keyword entries, when a new source document is opened, the link manager 150 parses the current source document for relevant keywords (using methods previously described for keyword searching in destination documents). Link manager 150 then searches the destination document keyword 506 field in the link database 152 for any occurrences of the relevant keywords parsed from the current source document. If any such keywords are found, a list of documents containing keywords matching the relevant keywords parsed from the source document is created. This list of documents is gathered from the source document identifier 502 field of the link database. This list of documents is then presented to the user. Various mechanisms may be employed for presenting the list of backward references to the user, including, but not limited to the use of a temporary bookmark folder within the browser 134, and a user-activated split screen view.
Suppose that a user visits the sports.com website, www.sports.com, shown by way of illustrative example in
In another aspect of the present invention, when a source document is opened containing multiple links (URLs) to various websites, these links within the source document can be organized and bookmarked hierarchically, by an exemplary method illustrated in
At block 704, a user opens a document containing multiple links (URL's) to various websites. This process can be initialized explicitly by the user (e.g., by answering a prompt such as “Save URLs as Hierarchical Bookmarks”, shown at block 706) or alternatively, automatically by the system (not shown). If the user chooses not to save the links (URLs) as hierarchical bookmarks the process ends at block 720. Otherwise, at block 708, a base bookmark folder is created, the naming for the folder based on the originating document name, or alternatively from the most relevant keywords from the document.
Next, at block 710, the structure of the document is analyzed in order to determine a logical grouping for the links (URL's) present within the source document into subcategories. This analysis can look at various structural aspects of the source document, including, but not limited to: headings, table of contents, lists, sections, paragraphs and/or references in order to group the links (URL's). To enhance the organization and grouping of the links (URL's) (or if no logical groupings could be found based on page structure), the content of the links and surrounding context are analyzed to parse the main keywords associated with each resource, and organize the links based on similar keywords, as shown at block 712. Multiple subcategorization schemes (i.e., groupings) may then be optionally presented to the user, thus enabling the user to choose the subcategorization scheme that best meets their needs. Keywords from the document context surrounding a grouping of links, and from the content within the link itself, is parsed to determine folder names for each logical grouping.
At block 714, subfolders are created based on the keywords from block 712, and the appropriate links are placed within each subfolder. In one embodiment of the present invention, an option exists that enables the user to specify whether or not the organization and grouping of links change as the context surrounding the links (and the content of the links themselves) are updated, as shown at block 716. If a user does not wish dynamic updates, the method ends at block 720. If a user affirmatively selects the dynamic update option, the link organization is periodically updated, as shown at block 718). In one embodiment, the changed links can be displayed to the user in the bookmark folders via “ghost links”, or alternatively by faded placemarks where the link used to reside which take the user to the new location of the link.
If the user wishes to save the URLs from the current document as historical bookmarks, a base bookmark folder for the current document is created. The name for the base bookmark folder for the current document can be derived in a number of ways. In the illustrated embodiment, the base bookmark folder is named based on the originating document name “REDSOX.com”. In an alternate embodiment, the name for the base bookmark folder can be derived from relevant keywords within the document.
Next, the structure of the current document (e.g., the Boston RED SOX webpage) is analyzed in order to determine a logical grouping for the links (URL's) present within the current document. In the illustrated embodiment, the website is divided into several headings (e.g., “Standings” 402A, “Schedule” 402B, “Articles” 402C and “Roster” 402D). These headings provide an excellent way to categorize the links (URL's) within the page. By analyzing the HyperText Markup Language (HTML) for the webpage, the relationship between the URL's and their corresponding headings may be determined. For example, the URLs: www.YANKEES.com 404A, www.REDSOX.com 404B, www.ORIOLES.com 404C and www.BLUEJAYS.com 404D are grouped under the “Standings” heading. The URL's pointing to articles on the Boston RED SOX webpage, i.e., www.sports.com 404E and www.bostonglobe.com 404F are grouped under the “Articles” heading. Finally, the URL's pointing to player's websites under the “Roster” heading, i.e., www.curtshilling.com 404G and www.davidortiz.com 404H are grouped under the “Roster” heading.
In other embodiments of the present invention, other structural aspects of the source document (e.g., headings, tables of contents, lists, sections, paragraphs) may be analyzed in order to group the URL's within the document. In one such embodiment, the user is presented with multiple potential grouping schemes for the keywords based on different types of structural groupings, and the user may choose the scheme which best reflects their needs.
Next, a subfolder is created under the base bookmark folder for each of the headings, and the links corresponding to each heading are moved into the corresponding subfolder, then displayed to the user as a browser option, as shown at 802. In this way, the URL's that exist within this document (e.g., webpage) are organized in a hierarchical fashion, and are available for future reference. In the illustrative example, only one level of subfolders is created, corresponding to the headings within the source document. It is noted that further hierarchical levels of subfolders could be created, and still remain within the scope and spirit of the present invention. For example, under the heading “Standings”, their may be subheadings “American League” and “National League”. These subheadings may be used to create corresponding subfolders under the “Standings” subfolder.
In the previous detailed description of exemplary embodiments of the invention, reference was made to the accompanying drawings (where like numbers represent like elements), which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments were described in sufficient detail to enable those skilled in the art to practice the invention, but other embodiments may be utilized and logical, mechanical, electrical, and other changes may be made without departing from the scope of the present invention. Different instances of the word “embodiment” as used within this specification do not necessarily refer to the same embodiment, but they may. The previous detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
In the previous description, numerous specific details were set forth to provide a thorough understanding of the invention. But, the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure the invention.
Number | Name | Date | Kind |
---|---|---|---|
5973692 | Knowlton et al. | Oct 1999 | A |
6049799 | Mangat et al. | Apr 2000 | A |
6122647 | Horowitz et al. | Sep 2000 | A |
6211871 | Himmel et al. | Apr 2001 | B1 |
6397219 | Mills | May 2002 | B2 |
6925594 | Dutta et al. | Aug 2005 | B2 |
7133860 | Iizuka et al. | Nov 2006 | B2 |
7194469 | Dowd et al. | Mar 2007 | B1 |
7213198 | Harik | May 2007 | B1 |
7275066 | Priestley | Sep 2007 | B2 |
7275206 | Bates et al. | Sep 2007 | B1 |
7308643 | Zhu et al. | Dec 2007 | B1 |
7406659 | Klein et al. | Jul 2008 | B2 |
7487190 | Black et al. | Feb 2009 | B2 |
20010020238 | Tsuda | Sep 2001 | A1 |
20010049700 | Ichikura | Dec 2001 | A1 |
20020116411 | Peters et al. | Aug 2002 | A1 |
20030101183 | Kabra et al. | May 2003 | A1 |
20030191737 | Steele et al. | Oct 2003 | A1 |
20030208482 | Kim et al. | Nov 2003 | A1 |
20040034635 | Czarnecki et al. | Feb 2004 | A1 |
20040068527 | Smith, III | Apr 2004 | A1 |
20040083424 | Kawai et al. | Apr 2004 | A1 |
20040177319 | Horn | Sep 2004 | A1 |
20040205496 | Dutta et al. | Oct 2004 | A1 |
20040205569 | McCarty et al. | Oct 2004 | A1 |
20040267739 | Dowling | Dec 2004 | A1 |
20050021862 | Schroeder et al. | Jan 2005 | A1 |
20050050032 | Lee | Mar 2005 | A1 |
20050086206 | Balasubramanian et al. | Apr 2005 | A1 |
20050114756 | Lehikoinen et al. | May 2005 | A1 |
20050120292 | Suzuki | Jun 2005 | A1 |
20050149519 | Abe | Jul 2005 | A1 |
20050198567 | Vermeulen et al. | Sep 2005 | A1 |
20050278475 | Karatal et al. | Dec 2005 | A1 |
20070022098 | Malik | Jan 2007 | A1 |
20070106721 | Schloter | May 2007 | A1 |
20070106956 | Platt et al. | May 2007 | A1 |
20110041099 | Weise et al. | Feb 2011 | A1 |
Number | Date | Country |
---|---|---|
2002259450 | Sep 2002 | JP |
Number | Date | Country | |
---|---|---|---|
20070136318 A1 | Jun 2007 | US |