Computers and the Internet have given users access to vast amounts of very diverse data. For example, if a user is in the market to buy a new house, Internet searches can be done to help the user identify homes that are for sale. In addition to just knowing what homes are for sale, a user may also want other information to help in the home search. For example, additional searches may help the user find maps with driving directions to identified homes, research schools in various neighborhoods, research community activities and resources, and so on. As another example, a family planning a vacation may search many websites to research different possible vacation destinations. Once a destination is chosen, additional research may be done to identify the best options for hotel accommodations, airfare, rental car rates, and so on.
While the Internet is a great tool for finding data, aggregating the data that is found so that it can be easily reviewed and/or shared with others is a difficult task.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Data collection is described. A user may define a data collection to which any type of data items (e.g., text, video, image, sound, etc.) may be added. Metadata is also maintained for each data item within the data collection. Metadata may include a source from which the data item was selected, one or more user-entered annotations, global positioning system (GPS) data from a mobile device, presentation size data, and presentation position data. Data collections may be shared with multiple users such that any of the users with whom a data collection is shared may add data items and/or add annotations to data items. Various levels of access permissions may also be associated with users with whom a data collection is shared. A graphical presentation of the data collection may also be generated such that a user can view the data items with in the data collection. Furthermore, the graphical presentation may be generated such that a user may interactively modify the size and or position of one or more of the data items within the data collection.
Data collection as described below provides a mechanism by which diverse types of data from various sources can be aggregated to enable a user to view a collection of data. In addition, once the data is collected, it may be annotated and shared with others. The following discussion is directed to data collection. while features of data collection can be implemented in any number of different computing environments, they are described in the context of the following exemplary implementations.
In the illustrated example, data collection application 106 remains open while user 102 browses various websites (e.g., via a separate browser application). While perusing website 108, the user identifies an interesting home that is for sale. The user selects the picture of the home 110 and the associated description 112, and adds the selections to the house hunting collection. Adding a selection to a collection may be implemented in any number of ways, for example, the user may drag and drop the selection to the collection name shown in data collection application 106. Alternatively, the user may make the selection, right click a mouse, and select an “add to collection” item from an available menu.
The user may continue browsing websites, as illustrated in
Data that can be added to a collection is not limited to data gathered from websites. For example, user 102 may select content 126 from an email message 128 to be added to the house hunting collection. Additionally, any type of data may be added to a collection, including, but not limited to, text, images, sound files, video files, and so on. Furthermore, data collections may be created locally, without requiring an Internet collection. In such an implementation, a local collection may maintain data gathered from local data sources, such as locally stored text files, images, email messages, and so on.
In addition to providing a presentation of a data collection, collection UI 200 also enables a user to modify the collection in various ways. For example, each item may be re-sized and arranged in any order or fashion within the collection UI 200. Furthermore, any number of annotations may be associated with each of the data items. For example, as shown in
In addition to enabling a user to gather data from multiple sources for presentation as a collection, data collection application 106 also enables a user to share a collection. For example, a collection created by one user may be accessed via the Internet (or other type of network) by another user. In an exemplary implementation, the user who creates a data collection may specify one or more users with whom the collection is to be shared. Furthermore, the creator may also specify access levels to be granted to one or more of the users with whom the collection is to be shared. For example, some users may be granted access to view the collection, but not be allowed to add, modify, or delete annotations or data items. Similarly, other users may be granted fill access, allowing them to add or remove items or annotations as freely as the creator of the collection is allowed. Such sharing of data collections may be very useful in many different scenarios. For example, a shared data collection provides a central location where several individuals, who may be geographically distant from one another, can all contribute data to be used to plan a group vacation.
Any number of techniques may be used to share data collections. For example, a user may choose to save a data collection to a web page or to a blog, which could then be viewed by others. Furthermore, data collections may be shared via a peer-to-peer network, email, various devices (e.g., mobile devices, televisions, gaming systems, etc.), and/or centralized storage.
Browser application 610 provides a user interface through which data received from a web server 506 can be presented as a web page. Other applications 612 may include, for example, a word processing application, an email application, a spreadsheet application, and any other type of software application that may be stored in memory 606 and executed on processor 602.
In an exemplary implementation, collections client application 614 is implemented as a thin client that includes a user interface 616. In such an implementation, user interface 616 enables a user to create or delete collections, as well as to view, add, modify, and delete data in collections. In such an implementation, all of the data associated with the collections is stored on a collections server, which is accessed via the network. In an alternate implementation, collections client application 614 also includes data collections cache 618. Data collections cache 618 is configured to store data that identifies collections that are available to a user of client device 502. These may include collections that the user has defined and/or collections that other users have chosen to share with the user. In addition to an identification of available collections, data collections cache 618 may also be configured to maintain records indicating changes that are to be made to the available collections. For example, data collections cache 618 may include data that defines a new collection that the user is creating, data items that are to be added to one or more of the collections, annotations to be added to items in one or more of the collections, data that identifies a data item to be removed from a particular collection, and so on. In such an implementation, data may be uploaded from data collections cache 618 to a collections server periodically (e.g., every few minutes, every few hours, or once per day). Furthermore, data collections cache 618 may be implemented to support local collections, created to maintain data gathered locally, with no need for an Internet connection. In such an implementation, collections client application 614 may include one or more components illustrated in
Exemplary collections service 710 includes collections data store 712 and collection presentation module 714. Collections data store 712 is configured to maintain data associated with one or more collections as defined by one or more users. For example, collections data store 712 may include data that defines a collection, as well as data items that are part of a defined collection. Collections data store 712 may also maintain metadata, such as a source (e.g., a URL or filename), an acquired date/time, GPS data (e.g., gathered from a mobile device used to access the collection), and one or more user-created annotations associated with data items. To support presentation of data collections to a user, collections data store 712 may also maintain, for each data item in a collection, a display size and a display location. The display size and the display location information may be utilized by collection presentation module 714 to format a collection for presentation to a user. For example, if a user requests (through collection client application 614) to view a particular collection, collection presentation module 714 queries collections data store 712 for all of the data items associated with the requested collection. The data items are then formatted for presentation to the viewer through collection client application user interface 616. By maintaining size and position data associated with each data item, if a user changes the presentation of the collection (e.g., by rearranging/resizing data items), those changes can be maintained.
In an alternate implementation, collections service 710 may provide a web-based user interface that enables users to create, manage, and share data collections. In such an implementation, no client application would need to be installed on the client device. Furthermore, collections service 710 may provide different user interfaces depending on how the service is being accessed. For example, one user interface may be configured for presentation via a personal computer while another user interface may be configured for presentation via a smaller mobile device.
Methods for data collection may be described in the general context of computer executable instructions. Generally, computer executable instructions include routines, programs, objects, components, data structures, procedures, and the like that perform particular functions or implement particular abstract data types. The methods may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
At block 804, a collection name is identified. For example, as part of the request to create a data collection, the user may specify a particular name to be associated with the data collection.
At block 806, a collection owner is identified. For example, the user submitting the request to create the collection may be identified (e.g., by a user ID) as the owner of the collection to be created.
At block 808, a new collection is created having the identified owner and the identified name. For example, a new record (or set of records) is written to collections data store 712, identifying the newly created data collection, the name of the collection, and the owner of the collection.
At block 902, a client device receives an indication of a user-selected data item to be added to a collection. For example, a user may select data from a website or other type of application, and indicate to collections client application 614 that the selected data is to be added to a particular collection.
At block 904, the client device identifies the data item, a data source, and a collection associated with the request. For example, collections client application 614 identifies the data item to be added to the collection, a source of the data item (e.g., a filename, a URL, or some other identifier), and an identifier associated with the collection to which the data item is to be added.
At block 906, the client device generates and transmits a request to add the data item to the collection. For example, collections client application 614 generates a request that includes information identifying the user, the data item, the source of the data item, and the collection to which the data item is to be added. Collections client application 614 transmits the request to collections service 710.
At block 908, a collections server receives a request to add a data item to a collection. For example, collections service 710 receives a request transmitted by collections client application 614.
At block 910, the collections server identifies a user associated with the request, the data item to be added to the collection, a source of the data item, and an identifier associated with the collection. For example, collections service 710 extracts this information from the received request.
At block 912, the collections server determines whether or not the user associated with the request is authorized to add data to the identified collection. For example, collections service 710 queries collections data store 712 to determine whether or not the user associated with the request is associated with the collection. If the user is identified as the owner of the collection, then the user is authorized to add data items to the collection. In the case of a shared collection, different users associated with the collection may have different permissions, so if the identified user is associated with the collection, but is not the owner of the collection, then the permissions associated with the user are queried to verify that the user is authorized to add data items to the collection.
If the identified user is not authorized to add data to the collection (the “No” branch from block 912), than at block 914, the collections server returns an error; and at block 916, the client device returns an error.
On the other hand, if the identified user is authorized to add data to the collection (the “Yes” branch from block 912), then at block 918, the item is added to the collection. For example, collections service 710 adds the data item to collections data store 712 such that the data item is associated with the specified collection. Furthermore, metadata including the source of the data item is also added to collections data store 712 such that the metadata is associated with the data item.
At block 1002, a client device receives a user request to view a collection. For example, a user may select a particular collection to be viewed via user interface 616.
At block 1004, the client device generates and transmits a request to view the collection. For example collections client application 614 generates a request that includes a user ID associated with the user and an identifier associated with the requested collection. The collections client application 614 transmits the request to collections server 304.
At block 1006, the collections server receives a request to view a collection. For example, collections service 710 receives a request transmitted from collections client application 614.
At block 1008, the collections server identifies a user and a collection associated with the request. For example, collections service 710 extracts this information from the received request.
At block 1010, the collections server determines whether or not the user associated with the request is authorized to view the identified collection. For example, collections service 710 queries collections data store 712 to determine whether or not the user associated with the request is associated with the collection, as either the owner of the collection, or as a user with whom the collection has been shared.
If the identified user is not authorized to view the data collection (the “No” branch from block 1010), than at block 1012, the collections server returns an error; and at block 1014, the client device returns an error.
On the other hand, if the identified user is authorized to view the data collection (the “Yes” branch from block 1010), then at block 1016, the collections server returns the data collection. For example, collection presentation module 714 queries collections data store 712 to identify the data items associated with the requested data collection. Collection presentation module 714 also generates a presentation layout for the data items. The presentation layout may be generated, for example, based on size and position metadata attributes associated with each of the data items. In an exemplary implementation, the first time a data item is included in a collection when a request to view the collection is received, initial size and position values are assigned to the data item. For example, the initial size value may be based on the original size of the data as found in the source of the data. The initial position value may be determined based on position values associated with other data items in the collection, such that when presented visually, the data item will not overlap any other data items in the collection.
At block 1018, the client device receives the data collection. For example, collections client application 614 receives the presentation layout of the data items from the collections server 504. In an alternate implementation, collection presentation module 714 may be implemented as part of collections client application 614, such that only the data items and their associated metadata are returned, and the client application generates the presentation layout.
At block 1020, the client device presents the data collection. For example, the presentation layout is presented via user interface 616.
At block 1104, it is determined whether or not the user associated with the request is authorized to share the identified data collection. For example, collections service 710 queries collections data store 712 to determine whether or not the user associated with the request is associated with the collection. If the user is identified as the owner of the collection, then the user is authorized to share the collection. In the case of a collection that is already shared, different users associated with the collection may have different permissions, so if the identified user is associated with the collection, but is not the owner of the collection, then the permissions associated with the user are queried to verify that the user is authorized to share the collection with other users.
If it is determined that the requesting user is not authorized to share the data collection (the “No” branch from block 1104), then at block 1106 an error is returned.
On the other hand, if it is determined that the user is authorized to share the data collection (the “Yes” branch from block 1104), then at block 1108, a user with whom the collection is to be shared is identified. For example, a user ID associated with the user may be extracted from the received request.
At block 1110, the identified user is associated with the collection according to the received request. For example, collections service 710 adds data to collections data store 712 indicating that the identified user is now associated with the identified collection. Furthermore, the received request may specify specific permissions to be associated with the user for the data collection. If so, then these permissions are also specified in collections data store 712.
Although embodiments of data collection have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as exemplary implementations of data collection.