Method and apparatus for processing metadata
Summary by NHIP
Metadata search with plug-ins
The method identifies a search scope to match registered metadata stores and invokes associated plug-in applications for local or remote searches. Results are returned to the client based on access privileges without searching underlying data files to improve efficiency.
Claim Score by NHIP
Abstract
A method and apparatus for processing metadata search with plug-in applications is disclosed. In one embodiment, in response to a search request for metadata stored in a metadata store, a plug-in associated with the metadata store is invoked to perform the request search within the metadata store. In addition, according to another embodiment, a search result of the metadata search may be filtered based on user privileges of a client initiating the search request, and some or all of the metadata from the search result may be returned to the client dependent upon the user privileges of the client. Other methods and apparatuses are also described.

Term
Projected expiry 10 February 2028.
- Priority and filed
- Granted
- Today
- Projected expiry
27 claims: 8 independent, 19 dependent
- 1A machine, having one or more processors, implemented method, comprising:in response to a search request received from a client for searching metadata stored within one or more metadata stores in a storage associated with a search facility, identifying a search scope based on the search request, wherein the search scope defines whether a search should be performed locally, remotely, or both;matching a service scope of each of a plurality of metadata stores with the search scope of the search request, the plurality of metadata stores having registered with the search facility, wherein each metadata store is associated with a service scope specifying whether the metadata store is located locally or remotely;generating a set of one or more search targets from the plurality of metadata stores that have the associated service scope matched with the search scope of the search request;for each of the search targets, retrieving a plug-in interface and a plug-in application associated with the search target;invoking the plug-in application via the associated plug-in interface to perform the requested search in the corresponding metadata store, wherein each of the metadata stores only stores metadata extracted from one or more data files which are stored in a separate storage location of the storage;and returning at least a portion of a search result to the client based on an access privilege of the client, wherein the search result is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search.
- 8A non-transitory machine-readable storage medium having instructions, when executed by a processor, cause the machine to perform a method, the method comprising:in response to a search request received from a client for searching metadata stored within one or more metadata stores in a storage associated with a search facility, identifying a search scope based on the search request, wherein the search scope defines whether a search should be performed locally, remotely, or both;matching a service scope of each of a plurality of metadata stores with the search scope of the search request, the plurality of metadata stores having registered with the search facility, wherein each metadata store is associated with a service scope specifying whether the metadata store is located locally or remotely;generating a set of one or more search targets from the plurality of metadata stores that have the associated service scope matched with the search scope of the search request;for each of the search targets, retrieving a plug-in interface and a plug-in application associated with the search target;invoking the plug-in application via the associated plug-in interface to perform the requested search in the corresponding metadata store, wherein each of the metadata stores only stores metadata extracted from one or more data files which are stored in a separate storage location of the storage;and returning at least a portion of a search result to the client based on an access privilege of the client, wherein the search result is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search.
- 15An apparatus, having one or more processors, comprising:a search unit to, in response to a search request received from a client for searching metadata stored within one or more metadata stores in a storage associated with a search facility, to identify a search scope based on the search request, wherein the search scope defines whether a search should be performed locally, remotely, or both, to match a service scope of each of a plurality of metadata stores with the search scope of the search request, the plurality metadata stores having registered with the search facility, wherein each metadata store is associated with a service scope specifying whether the metadata store is locally or remotely, to generate a set of one or more search targets from the plurality of metadata stores that have the associated service scope matched with the search scope of the search request, and a plug-in application associated with each of the search targets to perform the requested search within the corresponding metadata store, wherein the search unit retrieves a plug-in interface associated with the plug-in application and invokes via the plug-in interface the plug-in application, wherein each metadata store only stores metadata extracted from one or more data files which are stored in a separate storage location of the storage, wherein the search unit returns at least a portion of a search result to the client based on an access privilege of the client, and wherein the search result is used to determine whether the corresponding one or more data files contain a search term of the search request without having to search the one or more data files to improve an efficiency of the search.
- 16Broadest claimClaim Score 33, narrow(NHIP)An apparatus, having one or more processors, comprising:in response to a search request received from a client for searching metadata stored within one or more metadata stores in a storage associated with a search facility, means for identifying a search scope based on the search request, wherein the search scope defines whether a search should be performed locally or remotely;means for matching a service scope of each of a plurality of metadata stores with the search scope of the search request, the plurality of metadata stores having registered with the search facility, wherein each metadata store is associated with a service scope specifying whether the metadata store is located locally or remotely;means for generating a set of one or more search targets from the plurality of metadata stores that have the associated service scope matched with the search scope of the search request;for each of the search targets, means for retrieving a plug-in interface and a plug-in application associated with the search target;means for invoking the plug-in application via the associated plug-in interface to perform the requested search in the corresponding metadata store, wherein each of the metadata stores only stores metadata extracted from one or more data files which are stored in a separate storage location of the storage;and means for returning at least a portion of a search result to the client based on an access privilege of the client, wherein the search result is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search.
- 17A machine implemented method, having one or more processors, comprising:in response to a search request from a client for searching metadata within a metadata store, performing a search in one or more metadata stores through one or more plug-in applications associated with the one or more metadata stores by matching a search scope of the search request with a service scope of each of the one or more plug-in applications, the search scope specifying whether the search should be performed locally, remotely, or both and the service scope indicating whether the corresponding plug-in application is able to search locally, remote, or both, resulting in set of metadata, the client being a desktop application running at a desktop of a local computer, wherein the metadata store only stores metadata extracted from one or more data files which are stored in a separate storage location of the local computer, wherein the search result of the metadata is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search;determining a usage privilege based on attributes of the metadata and a privilege of a user who logs onto the desktop of the local computer, wherein the privilege of the user is obtained from an access control list (ACL) maintained within a file system of the local computer;and returning at least a portion of the set of metadata to the client based on the usage privilege associated with the client.
- 21A non-transitory machine-readable storage medium having instructions, when executed by a machine, cause the machine to perform a method, the method comprising:in response to a search request from a client for searching metadata within a metadata store, performing a search in one or more metadata stores through one or more plug-in applications associated with the one or more metadata stores by matching a search scope of the search request with a service scope of each of the one or more plug-in applications, the search scope specifying whether the search should be performed locally, remotely, or both and the service scope indicating whether the corresponding plug-in application is able to search locally, remote, or both, resulting in set of metadata, the client being a desktop application running at a desktop of a local computer, wherein the metadata store only stores metadata extracted from one or more data files which are stored in a separate storage location of the local computer, wherein the search result of the metadata is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search;determining a usage privilege based on attributes of the metadata and a privilege of a user who logs onto the desktop of the local computer, wherein the privilege of the user is obtained from an access control list (ACL) maintained within a file system of the local computer;and returning at least a portion of the set of metadata to the client based on a usage privilege associated with the client.
- 26An apparatus, having one or more processors, comprising:a search unit, in response to a search request from a client for searching metadata within a metadata store, to perform a search in one or more metadata stores through one or more plug-in applications associated with the one or more metadata stores by matching a search scope of the search request with a service scope of each of the one or more plug-in applications, the search scope specifying whether the search should be performed locally, remotely, or both and the service scope indicating whether the corresponding plug-in application is able to search locally, remote, or both, resulting in set of metadata, the client being a desktop application running at a desktop of a local computer, wherein the metadata store only stores metadata extracted from one or more data files which are stored in a separate storage location of the local computer, wherein the search result of the metadata is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search;an access control unit to determine a usage privilege based on attributes of the metadata and a privilege of a user who logs onto the desktop of the local computer, wherein the privilege of the user is obtained from an access control list (ACL) maintained within a file system of the local computer;and a filtering unit to return at least a portion of the set of metadata to the client based on a usage privilege associated with the client.
- 27An apparatus, having one or more processors, comprising:in response to a search request from a client for searching metadata within a metadata store, means for performing a search in one or more metadata stores through one or more plug-in applications associated with the one or more metadata stores by matching a search scope of the search request with a service scope of each of the one or more plug-in applications, the search scope specifying whether the search should be performed locally, remotely, or both and the service scope indicating whether the corresponding plug-in application is able to search locally, remote, or both, resulting in a set of metadata, the client being a desktop application running at a desktop of a local computer, wherein the metadata store only stores metadata extracted from one or more data files which are stored in a separate storage location of the local computer, wherein the search result of the metadata is used to determine whether the corresponding one or more data files contain information related to a search term of the search request without having to search the one or more data files to improve an efficiency of the search;means for determining a usage privilege based on attributes of the metadata and a privilege of a user who logs onto the desktop of the local computer, wherein the privilege of the user is obtained from an access control list (ACL) maintained within a file system of the local computer;and means for returning at least a portion of the set of metadata to the client based on a usage privilege associated with the client.
Independent claims8
83 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
0001The present invention relates generally to data processing. More particularly, this invention relates to processing metadata.
BACKGROUND
0002Modern data processing systems often include a file management system which allows a user to place files in various directories or subdirectories (e.g. folders) and allows a user to give the file a name. Further, these file management systems often allow a user to find a file by searching for the file's name, or the date of creation, or the date of modification, or the type of file. An example of such a file management system is the Finder program which operates on Macintosh computers from Apple Computer, Inc. of Cupertino, Calif. Another example of a file management system program is the Windows Explorer program which operates on the Windows operating system from Microsoft Corporation of Redmond, Wash. Both the Finder program and the Windows Explorer program include a find command which allows a user to search for files by various criteria including a file name or a date of creation or a date of modification or the type of file. However, this search capability searches through information which is the same for each file, regardless of the type of file. Thus, for example, the searchable data for a Microsoft Word file is the same as the searchable data for an Adobe PhotoShop file, and this data typically includes the file name, the type of file, the date of creation, the date of last modification, the size of the file and certain other parameters which may be maintained for the file by the file management system.
0003Many desktop search tools have emerged to enable a user to search for documents located on storage devices attached to a computer, either locally or remotely, such as Copernic Desktop Search, MSN Desktop Toolbar, Yahoo Desktop Search and Google Desktop. Typically, these tools create indexes out of information available in the file systems mounted to a computer operating environment, such as web browser histories, e-mail archives, word-processor documents and so on. A search is then conducted by matching query key words against the indexed data. Modern data processing system often includes a variety of file types. To index a new type of file, these desktop tools have to be upgraded with an additional file type support. This is not desirable as the number of new applications with new types of data continues to grow. Furthermore, an application may not allow direct access to an internal application data. Thus, support for a search for a metadata as part of an application data will not be available without interfacing with the application.
0004Usually, when a user selects a search result, an application is expected to act on the selection. For example, if the selected item is a hypertext with an URL (Universal Resource Identifier) points to a web page, a browser will be fetching and displaying the web page accordingly. If the selected item is a Microsoft Word document, a Microsoft Word application will be activated to process the document. Determining which application to activate for a selected item is typically done through an established association between an application and some information in the path identifying the selected item, such as the file name extension. It is well known that existing desktop search tools are capable of invoking Microsoft Word program for a selected item having a file name with a “.doc” extension. Utilities are also available in the operating environment allowing a user to associate an application with a designated file name extension. However, not every application has an established association with a file name extension. On the other hand, an application might not allow direct access to the underlying path information, such as a file name, of its application data. Therefore, the current mechanism of associating an application from a path identifying the application data may not apply for a metadata search result. As such, a user will not experience a unified user experience in conducting a search and using the search result.
0005Certain presently existing application programs allow a user to maintain data about a particular resource, such as a file. This data about a particular resource may be considered metadata because it is data about other data. A metadata for a particular file may include information about the author of a file, a summary of the document, and various other types of information. Typically, a metadata is an integral part of its associated resource and is maintained by the same application managing the associated resource. A program such as Microsoft Word may automatically create some of this data when a user creates a file and the user may add additional data or edit the data by selecting the “property sheet” from a menu selection in Microsoft Word. The property sheets in Microsoft Word allow a user to create metadata for a particular file or document.
0006However, in existing systems, a user is not able to search for metadata across a variety of different applications using one search request from the user. Even though existing desktop search tools could index the data of a file, none of them is capable of indexing the metadata associated with the file. Thus, existing systems can perform one search for data files, but this search does not also include searching through metadata for those files. Further, the metadata associated with a file is typically limited to those standardized metadata.
0007In addition, existing systems apply access permission to all metadata associated with a file or directory as a whole. For example, if a file is readable, all its associated metadata such as the modification date, creator codes, finger flags, icon position and label are all readable. Similarly, if a file is writable, all its associated metadata are writable.
SUMMARY OF THE DESCRIPTION
0008Methods and apparatuses for processing metadata are described herein. In one embodiment, in response to a search request for metadata stored in a metadata store, a plug-in associated with the metadata store is invoked to perform the request search within the metadata store. In addition, according to another embodiment, a search result of the metadata search may be filtered based on user privileges of a client initiating the search request, and some or all of the metadata from the search result may be returned to the client dependent upon the user privileges of the client.
0009Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
BRIEF DESCRIPTION OF THE DRAWINGS
0010The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
0011<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram illustrating an example of architecture for processing metadata which may be used with one embodiment of the invention.
0012<figref idref="DRAWINGS">FIG. 2A</figref> is a block diagram illustrating a metadata processing system according to one embodiment of the invention.
0013<figref idref="DRAWINGS">FIG. 2B</figref> is a flow diagram illustrating a process for processing metadata using a plug-in according to one embodiment of the invention.
0014<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram illustrating an example of metadata processing system according to an alternative embodiment of the invention.
0015<figref idref="DRAWINGS">FIG. 4A</figref> is a flow diagram illustrating a process for a metadata search according to one embodiment of the invention.
0016<figref idref="DRAWINGS">FIG. 4B</figref> is a flow diagram illustrating a process for filtering results of a metadata search according to one embodiment of the invention.
0017<figref idref="DRAWINGS">FIG. 5A</figref> is a block diagram illustrating registering a plug-in application with a metadata server according to one embodiment.
0018<figref idref="DRAWINGS">FIG. 5B</figref> is a flow diagram illustrating a process for registering a plug-in application to a metadata server according to one embodiment.
0019<figref idref="DRAWINGS">FIG. 6</figref> is a diagram illustrating an example of metadata which may be used one embodiment.
0020<figref idref="DRAWINGS">FIG. 7A</figref> is a block diagram illustrating a metadata processing system according to one embodiment of the invention.
0021<figref idref="DRAWINGS">FIGS. 7B and 7C</figref> are flow diagrams illustrating processes for searching metadata according to certain embodiments of the invention.
0022<figref idref="DRAWINGS">FIG. 8A</figref> is a block diagram illustrating a system for filtering metadata based on a user privilege according to one embodiment.
0023<figref idref="DRAWINGS">FIG. 8B</figref> is a flow diagram illustrating a process for filtering metadata according to one embodiment of the invention.
0024<figref idref="DRAWINGS">FIG. 9</figref> is a diagram illustrating an example of metadata in view of user privileges according to one embodiment.
0025<figref idref="DRAWINGS">FIGS. 10A and 10B</figref> are diagrams illustrating usage privileges for filtering the metadata according to certain embodiments of the invention.
0026<figref idref="DRAWINGS">FIG. 11</figref> is a block diagram of a digital processing system, which may be used with one embodiment of the invention.
DETAILED DESCRIPTION
0027Methods and apparatuses for processing metadata are described herein. In the following description, numerous details are set forth to provide a more thorough explanation of embodiments of the present invention. It will be apparent, however, to one skilled in the art, that embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring embodiments of the present invention.
0028Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
An Example of a Metadata Processing System
0029<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram illustrating an example of architecture for processing metadata which may be used with one embodiment of the invention. Note that various different software architectures may be used to implement the functions and operations described herein. The following discussion provides one example of such an architecture, but it will be understood that alternative architectures may also be employed to achieve the same or similar results. The software architecture shown in <figref idref="DRAWINGS">FIG. 1</figref> is an example which is based upon the Macintosh operating system.
0030Referring to <figref idref="DRAWINGS">FIG. 1</figref>, according to one embodiment, architecture <b>100</b> includes a metadata processing software <b>101</b> and an operating system (OS) kernel <b>103</b> which is operatively coupled to the metadata processing software <b>101</b> for a notification mechanism. The metadata processing software <b>101</b> is also coupled to other software programs such as a file system graphical user interface software <b>105</b> (which may be the Finder), an email software <b>107</b>, and other applications <b>109</b>. These applications are coupled to the metadata processing software <b>101</b> through client application program interface <b>111</b> which provide a method for transferring data and commands between the metadata processing software <b>101</b> and the software <b>105</b>, <b>107</b>, and <b>109</b>. These commands and data may include search parameters specified by a user as well as commands to perform searches from the user, which parameters and commands (e.g., search terms or search scope) are passed to the metadata processing software <b>101</b> through the interface <b>111</b>.
0031The metadata processing software <b>101</b> is also coupled to a collection of importers <b>113</b> which extract data from various applications. In particular, in one exemplary embodiment, a text importer is used to extract text and other information from word processing or text processing files created by word processing programs such as Microsoft Word, etc. This extracted information is the metadata for a particular file. Other types of importers extract metadata from other types of files, such as image files or music files. In this particular embodiment, a particular importer is selected based upon the type of file which has been created and modified by an application program.
0032For example, if the data file was created by PhotoShop, then an image importer for PhotoShop may be used to input the metadata from a PhotoShop data file into the metadata database <b>115</b> through the metadata processing software <b>101</b>. On the other hand, if the data file is a word processing document, then an importer designed to extract metadata from a word processing document is called upon to extract the metadata from the word processing data file and place it into the metadata database <b>115</b> through the metadata processing software <b>101</b>. Typically, different importers may be required in order to handle multiple different application programs which are used in a typical computer system. The importers <b>113</b> may optionally include multiple exporters which are capable of exporting the extracted metadata for particular types of data files back to property sheets or other data components maintained by certain application programs. For example, certain application programs may maintain some metadata for each data file created by the program, but this metadata is only a subset of the metadata extracted by an importer from this type of data file. In this instance, the exporter may export back additional metadata or may simply insert metadata into blank fields of metadata maintained by the application program.
0033The software architecture <b>100</b> also includes a file system directory <b>117</b> for the metadata. This file system directory keeps track of the relationship between the data files and their metadata and keeps track of the location of the metadata object (e.g. a metadata file which corresponds to the data file from which it was extracted) created by each importer. In one exemplary embodiment, the metadata database is maintained as a flat file format as described below, and the file system directory <b>117</b> maintains this flat file format. One advantage of a flat file format is that the data is laid out on a storage device as a string of data without references between fields from one metadata file (corresponding to a particular data file) to another metadata file (corresponding to another data file). This arrangement of data will often result in faster retrieval of information from the metadata database <b>115</b>.
0034The software architecture <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> also includes find by content software <b>119</b> which is operatively coupled to a database <b>121</b> which includes an index of files. The index of files represents at least a subset of the data files in a storage device and may include all of the data files in a particular storage device (or several storage devices), such as the main hard drive of a computer system. The index of files may be a conventional indexed representation of the content of each document. The find by content software <b>119</b> searches for words in that content by searching through the database <b>121</b> to see if a particular word exists in any of the data files which have been indexed. The find by content software functionality is available through the metadata processing software <b>101</b> which provides the advantage to the user that the user can search concurrently both the index of files in the database <b>121</b> (for the content within a file) as well as the metadata for the various data files being searched.
0035In addition, according to certain embodiments of the invention, metadata processing software <b>101</b> may optionally include one or more metadata plug-ins <b>123</b> that provide an interface to a search facility in which the search may be conducted. A plug-in is a computer program that can, or must, interact with another program to provide a certain, usually very specific, function. Typical examples are plug-ins to display specific graphic formats (e.g., SVG if the program doesn't support this format natively), to play multimedia files, to encrypt/decrypt email (e.g., PGP), or to filter images in graphic programs. The main program (a web browser or an email client, for example) provides a way for plugins to register themselves with the program, and a protocol by which data is exchanged with plugins.
0036In this application, there may be a metadata store or database having a format or configuration that is not well known to system <b>100</b>, or alternatively, system <b>100</b> does not implement a specific way to handle such metadata store or database. In this case, the metadata store or database may provide a plug-in having functionality (e.g., specific search capabilities) for the specific configuration of the metadata store or database.
0037In one embodiment, metadata processing software <b>101</b> may invoke the associated plug-in (e.g., also referred to as a plug-in interface) to perform a metadata search in the metadata store or database. As a result, the metadata processing software <b>101</b> does not need to know how to perform such a search within the respective metadata store or database. What it needs is to pass certain parameters of the search request to the plug-in and the invoked plug-in takes over the rest of the searches. This is typically useful for a third-party metadata store/database or search facility to be hooked up with the system <b>100</b>.
0038In a further embodiment, a search result of metadata may be screened or filtered before returning to a client based on a privilege associated with the client or a user of the client, using a metadata filtering mechanism <b>125</b>. For example, certain metadata of an object or file may not be appropriately exposed to certain users or clients, for example, based on certain access control lists (ACLs), which may be configured by an administrator of system <b>100</b>. As a result, only a portion of the metadata that is determined to be viewable by the client would be returned, while the rest of the metadata may not returned in view of the usage privileges.
Examples of Metadata Searches Using a Plug-in
0039<figref idref="DRAWINGS">FIG. 2A</figref> is a block diagram illustrating a metadata processing system according to one embodiment of the invention. For example, system <b>200</b> of <figref idref="DRAWINGS">FIG. 2</figref> may be implemented as part of system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>. Referring to <figref idref="DRAWINGS">FIG. 2A</figref>, system <b>200</b> includes one or more clients <b>201</b> communicatively coupled to metadata server (MDS) <b>202</b>. Clients <b>201</b> and MDS <b>202</b> may be located within a local system. Alternatively, clients <b>201</b> and MDS <b>202</b> may be communicatively coupled over a network. MDS <b>202</b> includes a metadata processing unit <b>203</b>, in response to a metadata search request to access databases <b>206</b>-<b>208</b>, locally or remotely. MDS <b>202</b> further includes one or more metadata directory/index files <b>204</b>, which may be implemented as part of file system directory for metadata <b>117</b> and/or index files <b>121</b> of <figref idref="DRAWINGS">FIG. 1</figref>. MDS <b>202</b> further includes a metadata plug-in table <b>205</b> listing all of the plug-ins that have registered with the MDS <b>202</b>. For example, plug-in <b>209</b> may be used by the metadata processing unit to access database <b>207</b> which may or may not well-known to the metadata processing unit <b>203</b>. Similarly, plug-in <b>210</b> may be used to access database <b>208</b> over a network, which may be LAN (local area network) or WAN (wide area network). For the purposes of illustration, only databases <b>206</b>-<b>208</b> are shown. It will be appreciated that more or fewer databases may also be implemented.
0040For example, when a search request is received by the metadata processing unit <b>203</b> from client <b>201</b>, metadata processing unit <b>203</b> may determine which of the databases <b>206</b>-<b>208</b> should be searched, for example, based on the information stored in metadata directory and/or index files <b>204</b>. If the processing unit <b>203</b> determines that databases <b>207</b> and/or <b>208</b> need to be searched, the respective plug-ins <b>209</b> and/or <b>210</b> may be invoked based on information stored in the metadata plug-in table <b>205</b>. In order to be invoked, according to one embodiment, a plug-in has to register with the MDS <b>202</b> and an executable of a plug-in may be stored within MDS <b>202</b> and a reference pointer or handle may be stored in the table <b>205</b>. The executable of a plug-in may be activated at a startup time of MDS <b>202</b> or may be dynamically launched at runtime. In addition, a search query to any of the metadata databases <b>206</b>-<b>208</b> may be partitioned into multiple sub-queries, where each sub-query may be scheduled and/or searched independently (e.g., multi-threading). Further, a remote metadata store (e.g., database <b>208</b>) may be mounted as a network drive using a network file access protocol, where metadata accesses to the mounted remote metadata store may be performed using a dedicated communication channel or tunnel established over the respective network file access protocol. Detailed information regarding the above features may be found in a co-pending U.S. patent application Ser. No. 11/499,267, entitled “Method and Apparatus for Searching Metadata”, filed Aug. 4, 2006, which is incorporated by reference herein in its entirety. Other configurations may exist.
0041<figref idref="DRAWINGS">FIG. 2B</figref> is a flow diagram illustrating a process for processing metadata using a plug-in according to one embodiment of the invention. Process <b>200</b> may be performed by a processing logic which may include software, hardware, or both. For example, process <b>200</b> may be performed by system <b>200</b> of <figref idref="DRAWINGS">FIG. 2A</figref>. Referring to <figref idref="DRAWINGS">FIG. 2B</figref>, at block <b>251</b>, a search request for metadata is received from a client. The search request may include a search scope (also referred to as a meta-scope) and one or more search terms. At block <b>252</b>, processing logic determines which of the metadata stores should be searched based on the search request. At block <b>253</b>, if a metadata store needed to be searched requires a plug-in, processing logic identifies such a plug-in, and at block <b>254</b>, processing logic invokes the identified plug-in to perform the search for the requested metadata.
0042<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram illustrating an example of metadata processing system according to an alternative embodiment of the invention. For example, system <b>300</b> may be implemented as an alternative design of system <b>200</b> of <figref idref="DRAWINGS">FIG. 2A</figref>. Referring to <figref idref="DRAWINGS">FIG. 3</figref>, system <b>300</b> includes a metadata server <b>301</b> interfacing with a client <b>303</b> and a plug-in application <b>305</b> (e.g., third party application or third party search facility), which may be located locally or remotely over a network (e.g., LAN, WAN, or Internet). The client <b>303</b> may be a client process, for example, controlled by a user. In one embodiment, metadata server <b>301</b> further includes a search unit <b>307</b>, one or more local stores <b>309</b>, and a store entry <b>311</b>. Some of the stores <b>309</b> may also be located remotely, physically (e.g., over a network) or logically (e.g., configured as a distant store). The search unit <b>307</b> is responsible for performing searches for metadata in the stores and issues search request to plug-in applications as needed.
0043A local store <b>309</b> includes metadata searchable by the search unit <b>307</b>. An example of a local store is a file system in a mounted disk volume to the metadata server <b>301</b>. However, a mounted disk may be a remote disk mounted over a network using a protocol similar to a network file system protocol, such that the corresponding store appears as if it is located locally. A store entry <b>311</b> includes a table of entries (e.g., a specific data structure or a lookup table), each having information about a search target (e.g., a storage to be searched). A search target may be a local store <b>309</b> or a plug-in application <b>305</b> with a plug-in data store <b>323</b>, which may or may not be located remotely. An entry for a plug-in application may include an identification (e.g., a path to access) of the application (e.g. “path<b>1</b>” <b>313</b>), the associated service scope (e.g. “scope<b>1</b>” <b>315</b>), and information about a plug-in interface (e.g. “plug-in interface<b>1</b>” <b>317</b>). In one embodiment, “path<b>1</b>” may be a URL (universal resource locator) linking with the store <b>323</b>.
0044In one embodiment, the value of “scope<b>1</b>” <b>315</b> may indicate a plug-in application will be participating in a local metadata search only. In one embodiment, the value of “plug-in interface<b>1</b>” points to the location of a dynamic link library implementing a plug-in interface associated with the plug-in application “Application<b>1</b>” <b>305</b>. An entry for a local store may include a local service scope <b>331</b> and information about the target local store <b>319</b>. Note that in another embodiment, a metadata repository may be embedded inside a plug-in application remotely connected to the metadata server. The search unit may interface with the embedded metadata repository through a plug-in interface associated with the plug-in application. Alternatively, application <b>305</b> may be part of a search engine that is capable of searching within database <b>323</b>, which may be located remotely with respect to application <b>305</b>. Other configurations may exist.
0045A plug-in application <b>305</b> may include a plug-in data store <b>321</b> with an internal metadata database <b>323</b>. Access to the metadata database <b>323</b> is completely inside the plug-in application <b>305</b>. The plug-in application <b>305</b> exposes the plug-in data store <b>321</b> to the metadata server <b>301</b> through a plug-in interface <b>325</b> running inside the metadata server <b>301</b>. Through the use of plug-in interfaces, different plug-in applications may provide unified search interfaces with the search unit <b>307</b> while maintaining their own individualized transactions with their corresponding plug-in interfaces. The capability of metadata server can thereby be extended with plug-in applications.
0046A plug-in application may include a plug-in data store which “shadows” an existing search scope, and selectively delegates searches to the shadowed data stores or to other arbitrary data stores internal to MDS as required. This shadowing capability may be used to extend MDS's internal data stores with capabilities such as fine-grained access control, etc.
0047<figref idref="DRAWINGS">FIG. 3</figref> also shows a query object <b>327</b> created in responding to a search request received from the client <b>303</b>, according to a specific embodiment. In one embodiment, the query object <b>327</b> includes search scope information extracted from the received search request. The query object <b>327</b> is then forwarded to the store entry <b>311</b> to determine a set of search targets. In one embodiment, the determination is performed based on matching the search scope inside the query object <b>327</b> with the service scope in an entry of the store entry <b>311</b>. A search target may be a local store or a plug-in store. A search target corresponding to an entry with the service scope matching the search scope is thereby selected. Information about the set of selected stores is sent to the search unit <b>307</b> as a store list <b>329</b>. Thereafter, the search unit <b>307</b> either performs a search over local stores <b>309</b> or calling a corresponding plug-in interface to search a plug-in application for each search target in the list of the store entry <b>311</b>.
0048<figref idref="DRAWINGS">FIG. 4A</figref> is a flow diagram illustrating a process for a metadata search according to one embodiment of the invention. Process <b>400</b> may be performed by a processing logic which may include software, hardware, or both. For example, process <b>400</b> may be performed by system <b>300</b> of <figref idref="DRAWINGS">FIG. 3</figref>. In this example, metadata search results with associated application identifiers are returned to the client making the metadata search request. Referring to <figref idref="DRAWINGS">FIG. 4A</figref>, at block <b>401</b>, a search query is received from a client process. Usually, the client process is controlled by a user who has already logged in to a system, such as a desktop computer, with associated user privileges. The search query can include a search scope specified by the user or automatically set by default.
0049In response to the received search query, a list of search targets is identified based on the query (block <b>403</b>). In one embodiment, the search targets include one or more third party plug-in applications. Each plug-in application may be associated with a service scope indicating a condition when the plug-in application should participate in the search. In one embodiment, the condition can be determined by comparing the service scope of the plug-in application with the search scope embedded within the search request. A service scope, for example, might indicate a plug-in application is needed in serving a local search request, a remote search request or both. A search scope may limit the scope of search to be local only, remote only, or both. For example, if the service scope of a plug-in application indicates a local search and the search scope of a request specifies both local and remote, the plug-in application will be included as one of the search targets for receiving the search request. Other search targets, such as build-in metadata search applications, may also participate in the search.
0050At block <b>405</b>, the search query is sent to each of the search targets. In one embodiment, a plug-in application receives the search request through an associated plug-in interface. The plug-in interface may be implemented, for example, as an executable or a dynamic link library. Such an executable may be launched when the system starts up. Alternatively, the executable may be launched dynamically when needed (e.g., per on-demand basis). A plug-in interface is usually provided by a third party together with a plug-in application or search facility. Communications between a plug-in interface and a plug-in application may be local or remote across a network (e.g., using tunneling protocols). Each search target, including a plug-in application, responds to the search request by conducting a metadata search.
0051Search results from each search target are received at block <b>407</b>. A search result from a plug-in application may include an identifier of the plug-in application, an identifier of the resource associated with the metadata retrieved by the plug-in application, and other relevant information, such as attributes and/or values of metadata. In one embodiment, a plug-in application may be identified by a URL (universal resource locator). In one embodiment, the resource in the search result may be identified by a path.
0052<figref idref="DRAWINGS">FIG. 4B</figref> is a flow diagram illustrating a process for filtering results of a metadata search according to one embodiment of the invention. Process <b>450</b> may be performed by a processing logic which may include software, hardware, or both. In this particular embodiment, metadata search results are received from a list of search targets, including third party plug-in applications (block <b>451</b>). Before returning the search results, a selection is performed at block <b>453</b> to allow the client to access those search results consistent with a user privilege associated with the client. In one embodiment, the search request may include the user information. The associated user privilege is then obtained based on the user information. In one embodiment, a search result may provide the access control information corresponding to the retrieved metadata. In another embodiment, the access control information is obtained from a system service (e.g., user account information) based on the search result. In one embodiment, the system service may use an access control list (ACL) in the file system to drive the access control information. In another embodiment, the system service may retrieve the access control information from a plug-in application through an associated plug-in interface.
0053For each search result, the selection may allow the whole result, a partial result, or none of the result to return to the client. For example, a search result may include a photo image, the name of the photographer taking the photo, and the date the photo was taken. The selection might allow the user to access the name of the photographer and the date the photo was taken, but hide the actual photo image from the user. Further information regarding these features will be described in details further below.
0054After all selected search results from each search target are collected, they are returned to the client (block <b>455</b>). These results might be presented to a user through the client process. In one embodiment, when a user clicks on a search result presented, the associated plug-in application may be automatically activated with identifiers of the resource and/or metadata from the corresponding search result. For example, a plug-in application such as Apperature from Apple Computer Inc., Cupertino, Calif. might return a search result identifying a JPEG photo image. A user clicking on the JPEG photo image would activate Apperature application automatically showing the photo image, even though a JPEG image might be associated with another image processing application by default set up by the user in the operating environment. Note that the relationship between an object (e.g., a JPEG image) and its plug-in interface may be transparent to a user. That is, a user may not know whether a plug-in interface has been invoked during a metadata search. Rather, a metadata search engine is intelligent enough to determine whether a plug-in interface is needed in order to access a particular search facility or storage.
0055As described above, before a plug-in interface can be invoked, the plug-in interface has to register with the metadata search system. <figref idref="DRAWINGS">FIG. 5A</figref> is a block diagram illustrating registering a plug-in application with a metadata server according to one embodiment. System <b>500</b> may be implemented as part of system <b>300</b> of <figref idref="DRAWINGS">FIG. 3</figref>. In this example, a plug-in application <b>505</b> having a plug-in data store performs registration transactions with the store manager <b>501</b> of the metadata server <b>503</b>. In one embodiment, the plug-in application <b>505</b> may reside in a separate server remotely coupled to the metadata server <b>503</b>. In one embodiment, the plug-in application <b>505</b> may be running locally within the metadata server. During a registration transaction, the store manager <b>501</b> receives the metadata search properties from the plug-in application <b>505</b>. The received properties may include, for example, information about, search scopes or meta-scopes <b>509</b>, an application identifier <b>507</b>, and a plug-in interface identifier <b>511</b>, etc., which may be stored within store entry <b>513</b>. Other information may also be included. In one embodiment, information about a received property may be verified and/or attached to the metadata server <b>503</b>. For example, a plug-in interface may point to a dynamically linked library remotely located. The store manager <b>501</b> or other components (e.g. a search unit, etc.) may verify the validity of the remote library and further download the library and attach it locally before making an entry to the store entry <b>513</b>. Once entries of the plug-in application <b>505</b> are successfully made into the store entry <b>513</b>, for example, by the store manager <b>501</b>, the plug-in application registration completes. Subsequently, a plug-in interface may be invoked via store entry <b>513</b> using the techniques set forth above.
0056<figref idref="DRAWINGS">FIG. 5B</figref> is a flow diagram illustrating a process for registering a plug-in application to a metadata server according to one embodiment. Process <b>550</b> may be performed by a processing logic which may include software, hardware, or both. For example, process <b>550</b> may be performed by system <b>500</b> of <figref idref="DRAWINGS">FIG. 5A</figref>. In this example, a plug-in application may be any third party application interested in providing metadata search capabilities such as a web application running in a remote web server or a desktop photo management tool, etc.
0057Referring to <figref idref="DRAWINGS">FIG. 5B</figref>, at block <b>551</b>, a registration request is received from a plug-in application. In response to the registration request received, a metadata property inquiry is sent to the plug-in application (block <b>553</b>). In one embodiment, the property inquiry may request information regarding, for example, service scopes, an application identifier, and/or a plug-in interface identifier, etc. The service scopes may indicate the plug-in application would be participating in a local metadata search, a remote metadata search, or any metadata search with search scopes including the name of one of the service scopes. An application identifier may be an identifier for the plug-in application for the client process to activate the plug-in application. The plug-in interface identifier may be a pointer to a set of executable codes implementing a plug-in interface between the plug-in application and the metadata server. In one embodiment, the plug-in interface identifier points to a dynamic link library. Subsequent to sending the inquiry, a set of metadata properties associated with the plug-in application are received (block <b>555</b>). The registration process is completed after storing the metadata properties within the metadata server (block <b>557</b>). Other operations may also be performed.
Embodiments of Presenting Metadata Based on Client Privileges
0058As discussed above, certain attributes of metadata may or may not be available to a particular user dependent upon a user privilege of the user. For example, as shown in <figref idref="DRAWINGS">FIG. 6</figref>, metadata <b>600</b> is extracted from an image or digital photo file such as, for example, a JPEG or GIF file. Referring to <figref idref="DRAWINGS">FIG. 6</figref>, metadata <b>600</b> includes one or more attributes <b>610</b>, each having a value <b>620</b>, which may include a numeric, an alphabet or any characters, or a combination of these. For the purposes of illustration, an ordinary user or viewer of metadata <b>600</b> may only be interested viewing attributes <b>601</b> and <b>602</b>. Such an ordinary user or viewer might not be interested view attribute <b>603</b>. However, a photographer may be interested viewing attribute <b>603</b> for the technical setting of the image. In addition, an author of the image associated with the metadata <b>600</b> may just want a viewer to view attributes <b>601</b> and <b>602</b> without viewing attribute <b>603</b> because the author may not want anybody know how to take this image. Further, the author may just want certain users (e.g., friends) to view attribute <b>603</b>.
0059According to certain embodiments of the invention, attributes <b>601</b>-<b>603</b> may be configured to be accessed based on user privileges of the clients or users. Certain metadata can be configured to be exposed to certain clients or users, while other metadata may be configured to hide from certain users or clients. Such configurations may be achieved using a metadata access control mechanism, similar to an access control list (ACL) of a file system, etc.
0060<figref idref="DRAWINGS">FIG. 7A</figref> is a block diagram illustrating a metadata processing system according to one embodiment of the invention. For example, system <b>700</b> may be implemented as a part of system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>. Referring to <figref idref="DRAWINGS">FIG. 7A</figref>, system <b>700</b> includes one or more clients <b>701</b> communicatively coupled (e.g., locally or over a network) to a metadata server <b>702</b>. Metadata server <b>702</b> includes a metadata search unit <b>704</b> to search metadata stored in one or more metadata stores <b>706</b>, which may be a local store or a distant store (e.g., locally or remotely over a network). Server <b>702</b> further includes a metadata access control unit <b>703</b> to control accesses of clients <b>701</b> to the metadata stored in metadata stores <b>706</b> based on user privileges associated with the clients <b>701</b>.
0061<figref idref="DRAWINGS">FIGS. 7B and 7C</figref> are flow diagrams illustrating processes for searching metadata according to certain embodiments of the invention. Processes as shown in <figref idref="DRAWINGS">FIGS. 7B and 7C</figref> may be performed by a processing logic which may include software, hardware, or both. For example, processes as shown in <figref idref="DRAWINGS">FIGS. 7B and 7C</figref> may be performed by system <b>700</b> of <figref idref="DRAWINGS">FIG. 7A</figref>. Referring to <figref idref="DRAWINGS">FIG. 7B</figref>, in this process example according to one embodiment, a search result of metadata is filtered based on user privileges of the requesting client or clients. Referring to <figref idref="DRAWINGS">FIG. 7C</figref>, in this process example according to an alternative embodiment, accesses of certain metadata stores are limited to certain users or clients based on the user privileges of the users or clients. Other configurations may exist.
0062<figref idref="DRAWINGS">FIG. 8A</figref> is a block diagram illustrating a system for filtering metadata based on a user privilege according to one embodiment. For example, system <b>800</b> may be implemented as part of system <b>700</b> of <figref idref="DRAWINGS">FIG. 7A</figref>. In this example, according to one embodiment, metadata <b>801</b> is retrieved from a metadata repository <b>807</b> by a search unit <b>809</b> according to a search request <b>803</b> from a client <b>805</b>. Before the metadata <b>801</b> is returned to the client <b>805</b>, it is forwarded to a filtering unit <b>811</b> to determine whether any element or attribute in the metadata should be returned as part of the search result. In a particular embodiment, filtering unit <b>811</b> may obtain a user ID from the search request <b>803</b> and retrieve user privilege information for the user from a user privilege repository <b>813</b>. The filtering unit <b>811</b> may obtain the corresponding access control information, such as access control list, for the metadata <b>801</b> from the access control repository <b>819</b>. Based on the user privilege and the access information, the filtering unit <b>811</b> thereby selects some or all of the metadata and returns the filtered metadata to the search unit <b>809</b> for responding back to the client <b>805</b>. In one embodiment, the filtering unit <b>811</b> may cache certain information about selected portion of metadata with respect to the user inside the user privilege repository <b>813</b> for performance purpose. In one embodiment, user privileges and metadata access control are updated through an access control update unit <b>815</b> from an administration process <b>817</b> operated by an administrator. In one embodiment, the access control update unit <b>815</b> calls a plug-in interface associated with a plug-in application to update access control information about a metadata stored inside the plug-in application. Furthermore, an additional set of values may be generated, for example, by attribute generator <b>819</b>, on the fly to be paired with a new attribute for a user with a certain privilege. Other components may also be included.
0063<figref idref="DRAWINGS">FIG. 8B</figref> is a flow diagram illustrating a process for filtering metadata according to one embodiment of the invention. Process <b>850</b> may be performed by a processing logic which may include software, hardware, or both. For example, process <b>850</b> may be performed by system <b>800</b> of <figref idref="DRAWINGS">FIG. 8A</figref>. Referring to <figref idref="DRAWINGS">FIG. 8B</figref>, a metadata search request is received from a client at block <b>851</b>. In one embodiment, the search request may be sent from a client process operated by a user. In another embodiment, the search request may also be issued automatically by a client process owned by a user. A set of metadata is then retrieved based on the search request (block <b>853</b>). The metadata may reside in a local disk volume or a remotely mounted disk volume. The metadata may be retrieved by a search over locally coupled metadata storages. Alternatively, the metadata may be returned from a third party application performing a metadata search over its own metadata storage according to the search request.
0064The user associated with the requesting client has to have a permission to access the returned metadata. A retrieved metadata or a portion of it may not be proper to return to the requesting client. At block <b>855</b>, a usage privilege is determined based on the retrieved metadata and the user. Information about the user for determining the usage privilege may include the unique user ID and a user privilege such as which groups the user belongs to. In one embodiment, the user ID may be extracted from a metadata request. In another embodiment, a user may be the current user logged in to the search facility where the user privilege may be available from the system environment settings. Information about the retrieved metadata for determining the usage privilege may include an access control list associated with the metadata. In one embodiment, the access control list may be obtained from the local metadata storage. In another embodiment, the access control list may be available through a plug-in interface with a third party plug-in application. The access control list may include access right such as “read”, “write”, or “list” to the whole set or a portion of the elements of the metadata. The access control list may also prescribe applicability of an access right to, such as, for example, a certain user, a certain group of users, or every user. The usage privilege is thereby determined according to the user privilege and the access control information of the metadata.
0065At block <b>857</b>, a metadata is selected if it is determined some elements of the metadata can be accessed by the user. For each selected metadata, the elements inside the selected metadata are further filtered at block <b>859</b>. In one embodiment, a metadata includes an attribute and an associated set of values. Each of the associated set of values may have its own access control list. In one embodiment, one access control list controls the whole set of values. Similar to selecting a metadata at block <b>857</b> using a usage privilege, the usage privilege of each value according to the user privilege of the user and the access control information of the value is applied to determine if the value should be selected at block <b>859</b>. Following block <b>861</b>, the whole set, a subset, or none of the associated value of the metadata may be selected.
0066Optionally, at block <b>863</b>, an additional set of values may be generated on the fly to be paired with a new attribute for a user with a certain privilege. In one embodiment, the attribute may be “total search time” and the set of values contains one element for the time spent to complete this metadata search. In one embodiment, a user with a privilege belonging to a “root” group will trigger generating such a dynamic pair of attribute and values. Finally, at block <b>865</b>, all the selected metadata elements and the optionally generated pairs of attributes and values are returned to the requesting client. Therefore, for the same metadata search request, one user might receive a smaller number of metadata than those received from a second user. It is also possible that certain users may receive a list of attributes without any values from a metadata search request. Other operations may also be performed.
0067<figref idref="DRAWINGS">FIG. 9</figref> is a diagram illustrating an example of metadata in view of user privileges according to one embodiment. For example, such resource processes may be used by system <b>800</b> of <figref idref="DRAWINGS">FIG. 8A</figref>. Referring to <figref idref="DRAWINGS">FIG. 9</figref>, a resource <b>901</b> is represented by a table including three entries, a data pointer points to the data content <b>903</b>, a first attribute having three values <b>905</b>, and a second attribute having only one value <b>907</b>. Attr<b>1</b> with its value set (Val<b>1</b>, Val<b>2</b>, Val<b>3</b>) and Attr<b>2</b> with its value set (Val<b>4</b>) are two metadata associated with the resource <b>901</b>. A metadata search request issued by User<b>1</b> returns a portion of the values for the first metadata and only the attribute for the second metadata <b>909</b>. User<b>1</b> has permission only to access attribute names of the metadata and partial values of the first metadata. For User<b>2</b> with different user privilege than User<b>1</b>, the same search request returns, however, only the first metadata with a complete set of values <b>911</b>. User<b>2</b> does not have permission to view the existence of the second metadata of resource R. User<b>3</b>, on the other hand, has full permission to access metadata of resource R and receives additionally an extra pair of attribute Attr<b>3</b> with two values, Val<b>5</b> and Val<b>6</b>, <b>913</b> created on the fly to be part of the search result for User<b>3</b>. Note that <figref idref="DRAWINGS">FIG. 9</figref> is described for the purposes of illustration only. Other formats or settings of the metadata may be applied.
0068<figref idref="DRAWINGS">FIGS. 10A and 10B</figref> are diagrams illustrating usage privileges for filtering the metadata according to certain embodiments of the invention. Referring to <figref idref="DRAWINGS">FIGS. 10A and 10B</figref>, table <b>1001</b> shows which user has a permission to access which attributes. A marked box indicates an access privilege. For example, all three users have accesses to metadata attribute Attr<b>1</b>, but User<b>2</b> is not allowed to access metadata attribute Attr<b>2</b>. Table <b>1003</b> illustrates usage privileges for a set of values associated with Attr<b>1</b>. Similarly, table <b>1005</b> illustrates usage privileges for a set of values associated with Attr<b>2</b>. Note that the usage privilege in table <b>1001</b> and the usage privilege in table <b>1005</b> are not completely independent. Usually, if a user does not have right to access a metadata attribute, a user would not have access to any of the associated values of the same attribute. Conceptually, for any given triplet of (attribute, value, user), the usage privilege could also be shown in a three-dimensional space with a yes or no value <b>1009</b>. For the same example, (Attr<b>1</b>, Val<b>1</b>, User<b>1</b>) has a “yes” value because User<b>1</b> has access right to both attribute Attr<b>1</b> and one of its values Val<b>1</b><b>1007</b>. Again note that <figref idref="DRAWINGS">FIGS. 10A and 10B</figref> are shown for the purposes of illustration only. Other formats or settings of the metadata may be applied.
An Example of a Data Processing System
0069<figref idref="DRAWINGS">FIG. 11</figref> is a block diagram of a digital processing system, which may be used with one embodiment of the invention. For example, the system <b>1100</b> shown in <figref idref="DRAWINGS">FIG. 11</figref> may be used as a machine or a system described above and may be used to perform any of the operations set forth above through this application, as a client, a server, or both.
0070Note that while <figref idref="DRAWINGS">FIG. 11</figref> illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components, as such details are not germane to the present invention. It will also be appreciated that network computers, handheld computers, cell phones, and other data processing systems which have fewer components or perhaps more components may also be used with the present invention. The computer system of <figref idref="DRAWINGS">FIG. 11</figref> may, for example, be an Apple Macintosh computer or an IBM compatible PC.
0071As shown in <figref idref="DRAWINGS">FIG. 11</figref>, the computer system <b>1100</b>, which is a form of a data processing system, includes a bus <b>1102</b> which is coupled to a microprocessor <b>1103</b> and a ROM <b>1107</b>, a volatile RAM <b>1105</b>, and a non-volatile memory <b>1106</b>. The microprocessor <b>1103</b>, which may be, for example, a PowerPC G4 or PowerPC G5 microprocessor from Motorola, Inc. or IBM, is coupled to cache memory <b>1104</b> as shown in the example of <figref idref="DRAWINGS">FIG. 11</figref>. Microprocessor <b>1103</b> may include multiple processors or multiple core logics (e.g., logical processors). The bus <b>1102</b> interconnects these various components together and also interconnects these components <b>1103</b>, <b>1107</b>, <b>1105</b>, and <b>1106</b> to a display controller and display device <b>1108</b>, as well as to input/output (I/O) devices <b>1110</b>, which may be mice, keyboards, modems, network interfaces, printers, and other devices which are well-known in the art.
0072Typically, the input/output devices <b>1110</b> are coupled to the system through input/output controllers <b>1109</b>. The volatile RAM <b>1105</b> is typically implemented as dynamic RAM (DRAM) which requires power continuously in order to refresh or maintain the data in the memory. The non-volatile memory <b>1106</b> is typically a magnetic hard drive, a magnetic optical drive, an optical drive, or a DVD RAM or other type of memory system which maintains data even after power is removed from the system. Typically, the non-volatile memory will also be a random access memory, although this is not required.
0073While <figref idref="DRAWINGS">FIG. 11</figref> shows that the non-volatile memory is a local device coupled directly to the rest of the components in the data processing system, the present invention may utilize a non-volatile memory which is remote from the system; such as, a network storage device which is coupled to the data processing system through a network interface such as a modem or Ethernet interface. The bus <b>1102</b> may include one or more buses connected to each other through various bridges, controllers, and/or adapters, as is well-known in the art. In one embodiment, the I/O controller <b>1109</b> includes a USB (Universal Serial Bus) adapter for controlling USB peripherals. Alternatively, I/O controller <b>1109</b> may include an IEEE-1394 adapter, also known as FireWire adapter, for controlling FireWire devices.
0074Thus, methods and apparatus for processing metadata have been described. Some portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
0075It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
0076Embodiments of the present invention also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
0077The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method operations. The required structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of embodiments of the invention as described herein.
0078A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
0079In the foregoing specification, embodiments of the invention have been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Contents5
18 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9971752B2 | Cited by | United States of America | Applicant |
| US2011296321A1 | Cited by | United States of America | Pre-grant |
| US2009063225A1 | Cited by | United States of America | Pre-grant |
| US11087075B2 | Cited by | United States of America | Applicant |
| US10031920B1 | Cited by | United States of America | Search report |
| US9430578B2 | Cited by | United States of America | Applicant |
| US9058571B2 | Cited by | United States of America | Applicant |
| US8843814B2 | Cited by | United States of America | Search report |
| US2013325853A1 | Cited by | United States of America | Pre-grant |
| US10380232B2 | Cited by | United States of America | Applicant |
| US9727577B2 | Cited by | United States of America | Applicant |
| US9461870B2 | Cited by | United States of America | Applicant |
| US9176720B1 | Cited by | United States of America | Applicant |
| US2025232247A1 | Cited by | United States of America | Search report |
| US11599499B1 | Cited by | United States of America | Applicant |
| US8769392B2 | Cited by | United States of America | Search report |
| US11886429B2 | Cited by | United States of America | Search report |
| US2011295945A1 | Cited by | United States of America | Pre-grant |
| US11036773B2 | Cited by | United States of America | Applicant |
| US2011093487A1 | Cited by | United States of America | Pre-grant |
| US2021173828A1 | Cited by | United States of America | Search report |
| US10983956B1 | Cited by | United States of America | Search report |
| US9317709B2 | Cited by | United States of America | Applicant |
| US9262420B1 | Cited by | United States of America | Search report |
| US9195840B2 | Cited by | United States of America | Applicant |
| US9148429B2 | Cited by | United States of America | Applicant |
| US10176192B2 | Cited by | United States of America | Applicant |
| US11663396B2 | Cited by | United States of America | Applicant |
| US2004107169A1 | Cites | United States of America | Search report |
| US2005171734A1 | Cites | United States of America | Search report |
| US2006242126A1 | Cites | United States of America | Search report |
| US5870559A | Cites | United States of America | Search report |
| US6678700B1 | Cites | United States of America | Search report |
| US6799180B1 | Cites | United States of America | Search report |
| US7392255B1 | Cites | United States of America | Search report |
| US20040107169A1 | Cites | United States of America | Search report |
| US20050171734A1 | Cites | United States of America | Search report |
| US20060242126A1 | Cites | United States of America | Search report |
2 members in 1 office; this record represents the family
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2008033921A1 | United States of America | A1 | |
| US7996380B2This record | United States of America | B2 |
56 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 2 RCEs.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 2
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Withdraw Flagged for 5/25W525 | W525 | |
| Flagged for 5/25F525 | F525 | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
10 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 7996380
- Application
- 11499335
Titles
- English
- Method and apparatus for processing metadata
Patent term adjustment
- A delay
- +555 daysthe office missed an examination deadline
- Net adjustment
- 555 days
Classification
- CPC, 2
- G06F16/2453
- G06F16/907
- IPC, 1
- G06F17 30
- USPC, 6
- 707707000
- 707705000
- 707706000
- 707731000
- 709201000
- 715210000