BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates generally to computer systems and, in particular, to accessing, viewing and manipulating archived information in a computer system.
2. Related Art
Systems that allow users to store and retrieve information in a computer system, such as database management systems, are well known. A database is a collection of data arranged according to a predefined structure. A telephone book is a classic example of a database containing a listing of telephone service subscribers, their respective telephone numbers and, optionally, their addresses. The data stored in such a database is organized in astructure100 having three fields: asubscriber name field110, a subscribertelephone number field120 and asubscriber address field130, as shown in FIG.1A.Records150 are copies ofstructure100 that contain information specific to individual telephone subscribers.Multiple records150 are stored indatabase140, as shown in FIG.1B.
Database management systems typically provide means for searching the database to retrieve a portion of the records stored in the database that satisfy certain search parameters. These searches are generally referred to as queries. Using the telephone book database of FIG. 1B as an example, one could search for all records in which the telephone subscriber has a certain address, or for all records in which the user has a certain name or, or for all records in which the user has a certain name and a certain address. Typically, however, database management systems do not allow users to manipulate the results of the queries, although some database management systems allow users to sort the order in which the records returned by a query are displayed. Other systems allow users to combine multiple search parameters in a single query; however, this approach still requires a new search to be performed. Accordingly, there is a need for a computer information system that allows results of searches to be manipulated and stored for future use, without requiring a new search to be performed.
Furthermore, current global network information systems, such as the World Wide Web, allow user to retrieve information stored on different host computers connected to a global network (e.g., the Internet). The World Wide Web is described on pages 681-723 of “Computer Networks” by Andrew S. Tanenbaum (Englewood Cliffs, N.J.: Prentice-Hall, Inc. 3rd ed. 1996), which are herein incorporated by reference in their entirety. The information stored on the World Wide Web, for example, is organized in a plurality of web pages. Each web page contains information in different formats, including multimedia. In addition, each web page may contain “links” to a other web pages. A user typically accesses the web pages through a web browser (i.e., a program executed by a computer connected to a global network that is able to retrieve and display data organized in web pages) by specifying an http address of a given web page. A user can then access other web pages either by specifying their http address or by “following a link” (i.e., clicking a hypertext field on a web page currently displayed by the web browser). This process is generally referred to as “navigating” or “surfing” the World Wide Web.
Users, however, cannot generally modify web pages to discard irrelevant information. In addition, currently available web browsers do not provide facilities for easily storing and manipulating a collection of links without interrupting the current search operation or performing a new search. Typically, web browsers employ a search engine to search the World Wide Web for web pages that meet the parameters of the search. Search engines then generate one or more web pages containing links to the web pages that meet the parameters of the search. The web browser, in turn, displays the web pages generated by the search. Thus, there is no easy way of manipulating the list of links contained in the web pages generated by the search engine. Accordingly, there is a need for a more flexible and faster method of organizing, searching and manipulating data than is currently available.
SUMMARY OF THE INVENTIONThe present invention provides a method and apparatus for accessing, viewing and manipulating data stored in a computer system. This is achieved by selecting one or more of the non-modifiable data objects stored in a computer system, creating references to the selected data objects and adding the references to a reference list. The reference list is then manipulated to allow a user to add to, remove from or search the references in the reference list.
Furthermore, the invention provides a method and apparatus for accessing, viewing and manipulating data stored in a computer system in which different operations are performed by different computers connected to a computer network. This is particularly advantageous for Internet related applications in which data objects are stored on a server computer and searched by client computers connected to the server computer over the Internet. A reference list is stored on the client computers and can be directly manipulated by the user without a need for further interaction with the server computer.
BRIEF DESCRIPTION OF THE DRAWINGFIG. 1A illustrates the structure of a record of a prior art telephone book database.
FIG. 1B shows a prior art telephone book database having a plurality of records.
FIG. 2 is a flow diagram of a data manipulation operation, according to an embodiment of the invention.
FIG. 3 illustrates the relationships among a library, an archive and several notebooks, according to an embodiment of the invention.
FIG. 4A is a flow diagram of a notebook manipulation operation, according to an embodiment of the invention.
FIG. 4B is a flow diagram of a standalone library creation operation, according to an embodiment of the invention.
FIG. 4C is a flow diagram of a notebook manipulation operation, according to an embodiment of the invention.
FIG. 4D is a flow diagram of a notebook entry duplication operation, according to an embodiment of the invention.
FIG. 5A shows the menu structure of a software application program, according to an embodiment of the invention.
FIGS. 5B-5D illustrate several views of a journal window of the software application program, according to an embodiment of the invention.
FIG. 6A illustrates a journal layout of a notebook window of a software application program, according to an embodiment of the present invention.
FIG. 6B illustrates a browser layout of a notebook window of a software application program, according to an embodiment of the present invention.
FIG. 7 illustrates a browser window of a software application program, according to an embodiment of the invention.
FIG. 8A illustrates a cockpit window of a software application program, according to an embodiment of the invention.
FIG. 8B illustrates a clue editing window of a software application program, according to an embodiment of the invention.
FIG. 8C illustrates a put window of a software application program, according to an embodiment of the invention.
FIG. 9A illustrates computers connected to a local area network, according to an embodiment of the invention.
FIG. 9B illustrates computers connected to a wide area network, according to an embodiment of the invention.
FIG. 9C illustrates computers connected to a global network, according to an embodiment of the invention.
FIG. 10A shows a window of a software application program that allows a user to access data entries stored in a standalone library.
FIG. 10B shows a window of a software application program that allows a user to access data entries stored in a standalone library over a global network.
FIG. 11 shows a window of a software application program that allows references to data entries to be accessed over a global network, according to an embodiment of the invention.
FIGS. 12A illustrates the elements of a reference to a data object.
FIG. 12B illustrates specific values of the elements of a reference to a data object.
FIG. 12C illustrates the values of the elements of a reference to a data object in the special case of a data object that is not referenced in any notebook.
DETAILED DESCRIPTION OF THE INVENTIONA method and apparatus are provided for accessing, viewing and manipulating a wide variety of data objects stored in a computer system. Unlike in a database management system, data objects stored in the computer system can be searched or selected and the results of the search/selection can be freely manipulated . In addition, since the data objects are non-modifiable, the chronology of the data objects is preserved automatically and the task of maintaining references to the data objects is greatly simplified.
Anoperation200 for selecting and manipulating non-modifiable data objects is described in FIG.2. The non-modifiable data objects are first created as modifiable data objects, edited and then converted into non-modifiable data objects. The modifiable data objects can be created using any suitable technique known in the art including, but not limited to, importing data objects from an external file, generating data objects in a word processing, graphics or paint program or “copying and pasting” data objects from another application program via a “copy and paste” facility provided by an operating system. As those skilled in the art are familiar with these techniques, they are not further discussed herein. First,stage210 determines whether a search is being performed on a set of non-modifiable data objects stored on the computer system, in whichcase operation200 proceeds toparameter search stage220. Otherwise the operation proceeds to stage260. Each non-modifiable data object has content data, a unique identifier and meta-information used in the search. The content data can be text, image, video, audio, multimedia or any combination thereof. For example, in some embodiments, the non-modifiable data objects are implemented in HTML. Inparameter search stage220, the search parameters are specified by a user of the computer system, although those skilled in the art realize that the search parameters could also be supplied by an application program executed by the computer system. For instance, the search parameters may include the author of the source data object, a range of creation dates of the data objects, specific text data contained in the data objects, whether the data object is already referenced in some other list of references to data objects, etc.Stage230 determines if any data objects satisfy the search parameters, in which case a reference to each of the matching data objects is created instage240. Otherwiseoperation200 terminates.Stage260 determines whether data objects are being selected, in whichcase operation200 proceeds to stage270. Otherwise,operation200 terminates. Instage270, one or more references to data objects are selected by a user andoperation200 proceeds to stage280.Stage280 then determines whether any of the reference are to be manipulated, in whichcase operation200 proceeds to stage250. Otherwiseoperation200 terminates. Any references to the matching data objects are manipulated instage250. For example, a list of references to the matching data objects is displayed in a window of a software application program executed by the computer system. A user may then add or delete references from the list, perform a new search on the references contained in the list or sort the references in a particular order. Individual data objects, as well as information about the data objects, can be displayed in the same window as the list of references either by scrolling through the references or by clicking on a particular reference in the reference list, as shown in FIGS. 6A,6B and7.
A computer system according to an embodiment of the invention is illustrated in FIG.3. In FIG. 3, alibrary300 includes ajournal310,archives320 andnotebooks330,340 and350.Journal310, in turn, has a plurality ofjournal entries350,360,370 and380.Journal entries350,360,370 and380 are data objects, according to an embodiment of the invention. The body of a journal entry can be created by any suitable technique known in the art. For example, text journal entries can be created by a word processing program executed by the computer system, image data entries can be created by a drawing program executed by the computer system, etc. Alternatively, journal entries can be created by inputting them directly into the computer system. For example, a text entry can be created by typing into a text pane of the computer system. An image data entry can be created by copying the image into a window pane of the computer system using the “cut and paste” function of an operating system such as the MACOS operating system.
Journal entries are typically fluid, in the sense that they can be modified at any time (e.g., by a user of the computer system). While journal entries are in a fluid state, they can only be accessed through the journal. Thus, adding entries to a journal is similar to a user having his/her own private electronic diary. Journal entries can be made available to other components of the system by storing them intoarchives320. This process is referred to herein as “freezing” a journal entry. Once a journal entry is stored inarchives320, it becomes “frozen” and can no longer be modified. Thus,journal entries360,370,380 and390 are stored inarchives320 asfrozen entries365,375,385 and395, respectively.
Furthermore, references tofrozen entries365,375,385 and395 can be combined innotebooks330,340 and350. These references are referred to as notebook entries. Thus, as used herein, a notebook is simply a collection of references to frozen entries stored inarchives320. Only one reference to an entry is allowed in each notebook, even though two separate notebooks can each contain references to the same entry. In FIG. 2, for instance,notebook A330 contains references tofrozen entries365 and375,notebook B340 contains references tofrozen entries365,385 and395, andnotebook C350 contains references tofrozen entries385 and395.
FIGS. 4A-4C are flow diagrams of operations performed on the system of FIG.3. FIG. 4A describes dataobject manipulation operation400, according to an embodiment of the invention.Journal entries360,370,380 and390 (FIG. 3) are first created instage405 and then stored inarchives320 asfrozen entries365,375,385 and395, instage408.Frozen entries365,375,385 and395 are then selected by a user for inclusion in a notebook (e.g., notebook A330), instage410. Instage415, a reference to the selected entries is created and added to the notebook. Finally, references are added to and/or removed from the notebook by a user, instage420.
FIG. 4B describes a standalonelibrary creation operation430, according to a further embodiment of the invention.Stages435,437,440,445 and447 are analogous tostages405,408,410,415 and420 of the operation of FIG.4A. Instage450, however, one or more notebooks are selected by the user for publication and, instage455, the selected notebooks and the corresponding entries inarchives320 are “published” by replicating the notebooks and the entries and storing the resulting copies as a non-modifiable collection of data objects and associated references in the computer system. The published library is referred to as a standalone library and the notebook entries contained in the standalone library cannot be modified. Furthermore, the standalone library does not provide a journal for adding entries to the archives. New entries cannot be added to the notebooks of the standalone library and existing notebooks cannot be modified.
FIG. 4C describes a dataobject manipulation operation460, according to a further embodiment of the invention.Stage465 is analogous to stage405 in FIG.4A. Instage470, however, the frozen entries are searched according to a set of search parameters.Stage475 then determines whether any of the frozen entries satisfies the search parameters, in which case the operation proceeds to stage480. Otherwise, the operation proceeds to stage485. Instage480, references to the frozen entries satisfying the search parameters are created and, combined with the entries already stored in the notebook (e.g., if a reference to the frozen entry does not already appear in the notebook, a new notebook entry is added referencing the frozen entry). Finally, instage485, notebook entries are added to or removed from the notebook by a user.
FIG. 4D illustrates a notebookentry duplication operation490, according to an embodiment of the invention. In FIG. 4D,stage487 first determines whether a search is being conducted, in whichcase operation490 proceeds to stage493. Otherwise,stage489 determines whether a selection is being performed, in whichcase operation490 proceeds to stage491. Otherwiseoperation490 terminates. The source notebook entries are searched instage493.Stage495 then determines if any source notebook entries satisfy the search parameters, in whichcase operation490 proceeds to stage497. Otherwiseoperation490 terminates. Instage491, one or more source notebook entries are selected to be duplicated in one or more destination notebooks. Finally, instage497, the source notebook entries either selected instage491 or returned by a search instage493 are combined with the destination notebook entries (e.g., if a reference to the same data object is not already contained in the destination notebook, a new reference to the data object is created and added to the destination notebook) andoperation490 terminates.
A software application program in accordance to an embodiment of the invention and executed by a general purpose computer running under the MACOS operating system is now described in reference to FIGS. 5A-5E,6A-6B and7-8.
FIG. 5A illustrates the menu structure of the software application program. In FIG. 5A,menubar505 has several pulldown menus:file menu515,edit menu525,text menu535, managemenu545 andnotebook menu547, in addition to the standard Apple menu common to most MACOS application programs. Each of the menus ofmenubar505 provides access to one or more commands that can be performed by the software application program. For instance,file menu515 contains commands to create, open, close and save a library, importing a file or a notebook, exporting a notebook (e.g., saving the frozen entries referenced by the notebook into a file) and printing the data objects referenced by a notebook on a printer connected to the computer system. In addition,file menu515 provides access to standard MACOS operations to close the current active window, performing page setup for a document to be printed or quitting the current application program. Similarly,edit menu525 provides access to standard formatting and editing commands supported by MACOS.Text menu535 provides access to commands that determine the appearance of text characters displayed by the software application program. Managemenu545, in turn, provides access to several commands to create a new entry or a new browser window (FIG.7), open the cockpit window (FIG. 8A) or display a clues window (FIG.8B). Finally,notebook menu547 provides access to commands to create, open, delete or rename a notebook, as well as to sort notebook entries.
FIGS. 5B-5D illustrate ajournal window500 of the software program displayed on a screen of a monitor of the computer system.Journal window500 includes awindow header510 and one ormore entry panes520.Window header510 includes acommand menu530 and asort menu550.Command menu530 controls commands to be performed on the entire journal, such as removing entries from the journal (“zap”) and replicating entries in one or more notebooks (“put” and “zip”). Zip and put are both used to replicate entries in one or more notebooks, however, put requires that the destination notebooks be explicitly specified by the user. By contrast, zip provides a facility (“sifting”) that allows users to automatically replicate notebook entries in a predetermined set of notebooks if a number of keywords (“clues”) associated with the set of notebooks are found in the entries being zipped. For example, a user can create a clue such as “project x” to distribute all entries regarding project x to all notebooks concerning project x. During a zip operation, entries are sifted for the term “project x” and those entries containing “project x” are automatically replicated in all notebooks specified in the project x clue.Sort menu550, in turn, controls the order in which theentry panes520 are displayed injournal window500.Entry panes520 may scroll up or down to displaymore entry panes520 than can physically be displayed injournal window500 at any one time. As those skilled in the art are familiar with scrolling window techniques, they are not further discussed herein.
Eachentry pane520 includes aformat menu555, aentry command menu560, atitle text field565, atag text field570, asource text label575, acreation time label580, acomment field pane585 and abody pane590.Title text field565,tag text field570,source text label575,creation time label580, andcomment pane585 are all searchable and siftable and are thus referred to as meta-information.Format menu555 controls the display format ofentry pane520.Entry command menu560 controls commands performed on the entry displayed inentry pane520.Title text field565 contains a user modifiable title identifying the entry. Typically, the title is assigned by the user creating the entry.Tag text field570 contains a user modifiable tag field used to further identify the entry.Tag text field570 is the only field that can still be modified after the entry is frozen (e.g., in a notebook entry).Source text label575 is a non-modifiable text label identifying the source of the entry. Likewise,creation time label580 is a text label indicating the creation time of the entry.Comments pane585, on the other hand, is a free form text field that allows the user creating the entry to describe the contents ofbody text pane590. Finally,body pane590 is a free form text field that is used to store the body of the entry. In some embodiments of the invention,body pane590 is used to store data other than text. For example, in some embodimentsbody text pane590 stores text data, image data, video data, audio data or any combination thereof.
All entries displayed in anentry pane520 ofjournal window500 are initially fluid. A fluid entry is an entry that can be modified by the user and is, therefore, private to the journal (the entry cannot be referenced outside the journal, e.g., by a notebook). A fluid entry that is stored inarchives320 becomes a frozen entry. Once an entry is frozen it can no longer be modified by the user, even though it may still appear injournal window500. A journal entry can be removed fromjournal window500 by issuing a “zap” command. The zap command can be issued fromentry command menu560 ofentry pane520, fromcommand menu530 ofjournal widow500 or fromcommand menu805 ofcockpit window800.
FIGS. 6A-6B illustrate anotebook window600. Notebook window600 (FIG. 6A) comprises awindow header610 and one ormore entry panes620A,620B, etc., one for each entry of the notebook displayed innotebook window600.Window header610 includes acommand menu630, atotal label635, alayout menu640 and asort menu650.Command menu630 controls commands to be performed on the entire notebook, such as removing entries from the notebook or replicating the entry into other notebooks.Layout menu640 controls the arrangement ofentry panes620A,620B, etc. innotebook window600. By selecting one of the layouts specified inlayout menu640 the user can cause notebook window to appear in either journal layout (FIG. 6A) or browser layout (FIG.6B).Sort menu650 controls the order in whichentry panes620A,620B, etc. are displayed innotebook window600.Entry panes620A,620B, etc. may scroll up or down withinnotebook window600 in FIG.6A. As those skilled in the art are familiar with scrolling window techniques, they are not further discussed herein.
Eachentry pane620A,620B, etc. includes acommand menu660, anotebook menu645, atitle label665, atag field670, aformat menu635, asource label675, acreation time label680, a freezingtime label683, acomment pane685 and abody pane690.Command menu660 controls commands performed on the entry displayed inentry panes620A,620B, etc. Whennotebook menu645 is activated, a list of notebooks containing the notebook entry displayed inentry pane620A is displayed. The user can then display one of these notebooks by simply selecting the notebook name fromnotebook menu645.Title label665 identifies the entry displayed inentry pane620A.Tag field670 contains a user modifiable tag used to identify the entry displayed inentry pane620A during searches and sorts.Format menu635 controls whichformat entry panes620A,620B, etc. are displayed in. Note that each ofentry panes620A,620B,620C,620D and620E appears in a different format selected viaformat menu635.Source label675 is a non-modifiable text label identifying the source of the entry displayed inentry pane620A. Likewise,creation time label680 is a text label indicating when the entry displayed inentry pane620A was created as a journal entry and freezingtime label683 is a text label indicating when the entry displayed inentry pane620A was frozen.Comments pane685, on the other hand, is a text field used to describe the contents ofbody pane690. Finally,body pane690 is a free form text field used to store the body of the entry displayed inentry pane620A. In some embodiments of the invention,body pane690 is used to store data other than text. For example, in someembodiments body pane690 stores text data, image data, video data, audio data or any combination thereof.
Whennotebook window600 appears in browser layout (FIG.6B), a notebookentry list pane695 is displayed betweenwindow header610 andentry pane620A. The user can then select any entry innotebook entry pane695 for display inentry pane620A by double clicking on the corresponding line of notebookentry list pane695.
Note that since notebooks, unlike journals, contain only frozenentries title label665, commentspane685 andbody pane690 ofentry pane620A cannot be modified by the user. By contrast,title field565, commentspane585 andbody pane590 ofentry pane590 of FIG. 5B can be modified since the entry displayed inentry pane590 is fluid. On the other hand,tag field670 can still be modified even though the underlying data object is frozen. As a result, the user can enter any text intag field670 to aid in future searches or sorts of the notebook entries.
Notebook entries can be exported as text files. For example when an export menu command ofcommand menu660 is selected, the entry shown inentry pane620A is stored as a text file in a location specified by the user. Those skilled in the art realize that a similar scheme can be devised to allow notebook entries to be imported from text files arranged in a predefined format. For example, text files could be imported as the body of a notebook entry. Alternatively, meta-information could be extracted from formatted data at a predefined location within the file.
FIG. 7 illustrates abrowser window700 that can be used to display notebook entries.Browser window700 is similar tonotebook window600 in browser mode, except for the addition of anotebook list pane710 and the elimination oflayout menu640. The user can thus access individual notebooks by double clicking on a corresponding line ofnotebook list pane710.
Users of the application program can also manipulate notebooks by means ofcockpit window800, shown in FIG.8.Cockpit window800 includes acommand menu805, asource pane810, adestination pane820 and afilter pane830.Filter pane830, in turn, includes atime box850,condition boxes860 and870 and anotebook list pane840.
Command menu805 controls the commands performed on the entries stored in library300 (FIG.3).Source pane810 can be used to select specific notebooks for the command specified bycommand menu805.Destination pane820 specifies which notebooks the selected entries should be replicated to, if required by the command selected fromcommand menu805. Notebooks can be added tosource pane810 anddestination pane820 by dragging selected list items fromnotebook list pane840 to sourcepane810 ordestination pane820 or by pushing an “add” button. Notebooks can be removed fromsource pane810 anddestination pane820 by selecting a corresponding line of the scrolling lists displayed insource pane810 anddestination pane820 and pushing the corresponding “delete” button.
Finally,filter pane830 allows the user to specify parameters to be used to limit the number of entries selected viasource pane810 that are to be transferred to the notebooks specified viadestination pane820, again, if required by the command selected fromcommand menu805. The operation specified viacommand menu805 is triggered by pushingcommand button880, whose appearance is modified to reflect the type of command selected viacommand menu805.
To speed up searches, in some embodiments, the contents of frozen entries are indexed upon freezing. This is accomplished by creating an alphabetical list of the words contained in an entry being frozen and comparing the list to a master list of words contained in the entries already frozen in the library. The master list, in turn, contains separate lists for each word of references to frozen entries containing that word. When a word in the list for the entry being frozen is already contained in the master list, a reference to the entry is added to the reference list for that word in the master list. Otherwise, if the word is not already included in the master list, the word is added to the master list and a new reference list for that word is created having a reference to the entry being frozen. Those skilled in the art realize that other techniques for indexing entries can be used in place of the one described above. The invention is not limited to any particular indexing scheme and other indexing schemes other than the one described herein can be used in accordance to the principles of the present invention. Since once entries are frozen they can no longer be modified, there is no need to re-index the entries every time an entry is modified. As a result, the overhead associated with indexing the entries is minimized, while still allowing for fast searching of the frozen entries stored in a library.
FIG. 8B illustrates aclues editing window890 that is displayed in response to a user selecting the clues command from manage menu545 (FIG.5A).Clue editing window890 allows the user to add, delete or edit clues. Clues allow the user to associate one or more notebooks with a specific name or acronym (the “clue”). When the clue is used either in the header or in the body of a journal or notebook entry and a zip command is issued, the entry is sifted and automatically added to the notebooks associated with the clue. The zip command is analogous to the put command, except that destination notebooks are not explicitly defined by means of put window895 (FIG.8C), but are determined according to the clues contained within the entry. Thus, the user can use the zip command to distribute entries to notebooks associated with certain topics specified by the clues without having to explicitly select the notebooks.
Furthermore, repetitive tasks like zipping and zapping all journal entries at the end of the day can be automated by using a feature of the application program known as “chores.” Chores allow a user to specify a certain operation to be performed at fixed intervals of time by the application program without requiring further user interaction. The user, of course, can cancel a chore when it is no longer needed.
FIG. 8C illustrates putwindow895 that is displayed when the put command is selected fromcommand menu805, or when a put command is selected using the command menu of a notebook or journal entry. Putwindow895 allows the user to specify which notebooks the selected entries are to be distributed to. For the user's convenience, anotebook list pane897 is provided which contains a listing of all available notebooks. Notebooks can be added or deleted from selectednotebook list899 by pushingadd button892 or deletebutton893. The put command is triggered by pushingput button896.
According to one embodiment of the invention, journal entries are created on a first client computer connected to a network, selected journal entries are added to the archive on the first computer, stored in the archives of a group library stored on a server computer connected to the network, and forwarded to the archives of a second client computer also connected to the network. FIGS. 9A-9C illustrate these operations when the computers are connected to a local area network, a wide area network and a global area network, respectively.
In FIG. 9A,general purpose computers900,910 and920 are connected to alocal area network930 and execute an information system program according to an embodiment of the invention, such as the one described in reference to FIG.3.Local area network930 is any suitable local area data communications network known in the art. A user ofgeneral purpose computer900 creates journal entries, as described in reference to FIGS. 5B-5D. The user then freezes the entries by storing them in the archives ofgeneral purpose computer900, as described in reference to FIG.3. Copies of all entries selected for distribution by the user are then transferred overlocal area network930 togeneral purpose computer920, where they are stored in the archives of the group library. A user ofgeneral purpose computer930 then receives copies of the frozen entries stored in the group library ofgeneral purpose computer920, storing them in his/her library.
In some embodiments, a general purpose computer is designated as a central repository for entries published by all users connected to the network and then distributes copies to the archives of individual computers while in others the central repository can be located on one of the individual computers. Other techniques for data distribution and broadcasting known in the art may be used according to the principles of the invention. As those skilled in the art are familiar with these techniques, they are not further discussed herein.
In FIG. 9B,general purpose computers900,910 and920 are connected to a wide area network940 and execute an information system program, according to an embodiment of the invention, such as the one described in reference to FIG.3. Wide area network940 is any suitable wide area data communications network known in the art. Entries are created and distributed over wide area network940 in a manner analogous to the one described with reference togeneral purpose computers900,910 and920 of FIG.9A.
In FIG. 9C,general purpose computers900,910 and920 are connected to a global network970 and execute an information system program, according to an embodiment of the invention, such as the one described in reference to FIG.3. Global network970 is any suitable wide area data communications network known in the art. Entries are created and distributed over global network970 in a manner analogous to the one described with reference togeneral purpose computers900,910 and920 of FIG.9A.
FIG. 10A shows awindow1000 of a software application program that allows a user to access a standalone library.
Window1000 has abrowser header1010, anentry list pane1020, anentry pane1030, anauthor notebook list1040 and areader notebook list1050.Browser header1010,entry list pane1020,entry pane1030 perform the same functions as the corresponding elements of browser window700 (FIG.7).Author notebook list1040, on the other hand, provides access to notebooks created by the author of the standalone library prior to the publication of the standalone library.Reader notebook list1050, provides access to notebooks created by the user after the publication of the standalone library. As a result, notebooks accessed throughauthor notebook list1040 cannot be modified by the user, while notebooks accessed throughreader notebook list1050 can be modified by the user.
FIG. 10B showswindow1000 displayed within a pane of web-browser window1060. Web-browser window1060 is a window of a web-browser application program such as NETSCAPE NAVIGATOR, available from Netscape Communications Corp. of Mountain View, Calif., or INTERNET EXPLORER, available from Microsoft Corp. of Redmond, Wash., that allows users to access and view web-pages over the Internet.Window1000 is displayed within a pane of web-browser window1060 by means of a plug-in extension to the web-browser application program that allows standalone libraries to be accessed and viewed over the Internet by accessing a URL of a computer on which the standalone library is residing.
FIG. 11 showswindow1060 of a software application program that allows a user to access libraries stored on one or more server computers connected to a client computer via the Internet, as shown in FIG.9C.
Pane1100 has abrowser header1110, anentry list pane1120, anentry pane1130, anauthor notebook list1140 and areader notebook list1150 that perform analogous functions to those ofbrowser header1010,entry list pane1020,entry pane1030,author notebook list1040 andreader notebook list1050 of FIGS. 10A-10B. However,library list1160 allows a user of the software application program to select a particular standalone library or hyper-library among a list of libraries stored on server computers connected to the client computer via the Internet. A hyper-library is similar to a standalone library, except that the author can always add new entries and notebooks to the hyper-library. A user of the application program of FIG. 11 can thus access any library stored on a computer connected to the Internet, regardless of whether the library is a standalone library or a hyper-library. Furthermore, references to data objects in separate libraries stored on server computers can be combined in a single notebook by a user of client computer connected to the server computers via the Internet. These notebooks comprise a local library that is private to the user (e.g., the USER library of FIG.11). The entries contained in a library stored on a server can be viewed by first selecting the library fromlibrary list1160 and then clicking on a line ofentry list1120. The contents of the corresponding entry are thus displayed inentry pane1130. The user can also search the entries in one or more libraries by using cockpit window800 (FIG.8A), create reader's notebooks and add/remove entries from the reader's notebooks. Author's notebooks, on the other hand, cannot be modified by the user. The application program of FIG. 11 can thus function as a search engine for data objects stored on computers connected to the Internet. The results of the search comprise a listing ofreferences1200A to data objects that include alibrary ID1210A, anotebook ID1220A and anentry ID1230A, as shown in FIG.12A. FIG. 12B shows the values oflibrary ID1210B,notebook ID1220B andentry ID1230B ofreference1200B for the notebook entry selected in FIG.11. As shown in FIG. 12C, when a frozen entry in a library is not referenced in any notebook,notebook ID1220C has a special value, such as —0— to indicate that the frozen entry is not referenced in any notebook.
An example is now provided of the operation of the various application programs described above. In the example, the application program of FIGS. 5A-8C is referred to as Personal Archive Librarian (PAL), the application program of FIGS. 9A-9B is referred to Group Archive Librarian (GAL), the application program of FIGS. 10A-10B is referred to as Standalone Archive Librarian (SAL) and the application program of FIG. 11 is referred to as Hyper Archive Librarian (HAL).
In the example, a three-person team is working on a project, but each teammember is located in a different office. Each teammember has a computer equipped with PAL, GAL, SAL and HAL. The computers are connected via the Internet. A Central Project Library (CPL) is created on a server computer equipped with GAL. The CPL has a unique library ID1210. Each teammember is registered as a user of the CPL by providing GAL with the library ID of the teammember's PAL library. A list of clues, agreed upon by the teammembers, is maintained on each teammembers' PAL together with a Project Notebook (PN). Each teammember periodically zips his/her journal entries. Entries containing any of the clues for the project are automatically added to the PN. Alternatively, a chore can be set up to automatically zip new entries at fixed time intervals. Once a day, GAL then sends a message to the PALs of each teammember registered as a user of the CPL requesting that all new notebook entries in the PNs be sent to GAL. The entries are thus imported into the CPL. GAL then exports to each teammember's PAL all new entries that were not created by that teammember. The entries are then imported into each teammember's PAL journal. At the end of this operation each teammember has a copy of all notebook entries pertaining to the project that are stored in the CPL, regardless of the author.
At some point, one of the teammembers is asked to teach a class on a new technology developed by the project. The teammember then searches the CPL for all entries related to the new technology and saves them in several notebooks dealing with different aspects of the new technology. When the teammember is satisfied that all the relevant entries have been included in the notebooks, he/she exports the notebooks and the corresponding entries into a standalone library (SL) about the new technology. During the course, each of the teammember's students has a computer equipped with SAL and a copy of the SL. The students can add new notebooks to their own SL, for example to organize the entries about a particular class.
Finally, once the project is completed, the teammembers decide to make both the SL and other portions of the CPL available to the public to promote the new technology. This is accomplished by exporting the desired portions of the CPL and importing them into HAL as an hyper library (HL). The HL has its own http address and can be accessed over the Internet by users equipped with HAL. A user could then search the HL, as well as other libraries (including both standalone libraries and hyper-libraries) accessible over the Internet, to create his/her own notebooks on the new technology.
MACOS is a registered trademark of Apple Computer, Inc. of Cupertino, Calif., NETSCAPE NAVIGATOR is a registered trademark of Netscape Communications Corp. of Mountain View, Calif. and INTERNET EXPLORER is a registered trademark of Microsoft Corp. of Redmond, Wash.
Embodiments described above illustrate but do not limit the invention. In particular, the invention is not limited by any number of journals or notebooks manipulated by the computer system, or by any particular hardware or software implementation. Furthermore, the invention is not limited by the format of the journal window, the cockpit window or the notebook window shown in the drawings and described in the specification. Other window formats or other user interface techniques known in the art can be used in accordance to the principles of the invention. The invention is also not limited to any number of computers connected to a network, or to any particular network implementation. Any suitable technique for computers to share information over a network can be used according to the invention. Other embodiments and variations are within the scope of the invention, as defined by the following claims.