This application is the US national phase of international application PCT/GB2006/000359 filed 2 Feb. 2006 which designated the U.S. and claims benefit of GB 0502259.5, dated 3 Feb. 2005, the entire content of which is hereby incorporated by reference.
The present invention relates to a document searching tool and method. In particular, it relates to an electronic document searching tool and method which is intended to be used in searching through large electronic databases storing a large number of electronic documents.
There is an increasingly large amount of information stored electronically. In addition, there is an increasing tendency for the data of different databases to be made available to casual searchers. For example, the Internet, which comprises a large number of different servers storing diverse information, is continually expanding both because more and more data is being written to Internet servers and because more and more organisations are connecting their databases to the Internet and thus making the information contained on these available via the Internet.
In order to enable users to sift through this mass of information and find a relevant document amongst the vast sea of irrelevant documents, much effort is being expended amongst the Information Technology community to research and develop searching methods and tools to tame the resulting, so-called “data-overload information-poverty” problem.
Most search tools used for finding electronic documents on the Internet are keyword based searches and these will tend to return an unmanageably large number of hits for any reasonably general query comprising one or merely a few keywords (at least where these are reasonably common words). Even more sophisticated search tools employing refined categorisations of document contents, etc., will tend to return a large number of “hits” for any fairly general query because they tend fundamentally to be keyword based search tools, nonetheless.
One of the reasons for this problem is simply the vast amount of data which a computer is able to process very quickly in order to produce a very large list of hits. Compare the performance of a typical Internet search engine which is likely to produce tens of thousands of results for a simple query such as “Hercules” with a human librarian who would at most typically produce two or three “hits”. However, prior to carrying out the “search” a human librarian would probably check whether the reader meant the legendary Greek Hero, or something entirely different (e.g. a commercial organisation with that name, a computer program, etc.) and the human librarian would almost certainly find something of relevance to the reader.
It is therefore clear that a human librarian can often outperform an Internet Search engine because he or she is able to ask intelligent questions of the person requesting the search and thus to exclude large sections of the overall “library” of documents which might be classified as “hits” on the basis of a simple key-word search alone. Such an ability is beyond the capacity of current computers to emulate with any great success and therefore alternative technical solutions are required to enable computers to improve on their searching capability, or more precisely, on their ability to assist a user/requester in finding one or two documents which are especially relevant or of interest to the user/requester from amongst a large number of possible documents typically found using a simple keyword based search, taking advantage of the technical strengths of computers whilst seeking to overcome their respective weaknesses (in particular their lack of intelligence).
U.S. Pat. No. 6,526,440 describes a system whereby the results of a search are re-ranked according to the frequency with which the returned documents are cited by other documents. In other words, this document describes a method of re-ranking documents based on meta-information (i.e. information which is about the documents) rather than simply relying on the information contained within the documents.
Vivisimo has produced a search engine called “Clusty” and currently available at http://clusty.com in which the results of any particular search are clustered together into related categories.
WO 01/46870 filed by Amazon.com describes a system for placing the results of a search into corresponding categories (each result have been pre-assigned to a particular category—e.g. book, CD, etc.) and for determining the order in which to present the different categories to the user in accordance with various rules (e.g. by calculating a ratio of number of results from a particular category to number of items in that category and ranking the categories according to the value of this ratio in respect of each category).
U.S. Pat. No. 6,385,602 describes a system similar to the Clusty search engine described above in which after carrying out a search, the results are clustered and based on the clustering dynamic categories are defined and used for presenting the results to the user.
US 2003/0088553 describes a system in which a first database stores a predefined set of categories, a second database stores a set of “anticipated search terms” and mappings to one or more of the predefined categories, and a third database stores mappings between the categories and various internet web-sites (i.e. the web-sites are pre-categorised into one or more of the pre-defined categories). A search then proceeds by assigning an input search query to a category and then retrieving all of the web-sites (or links or titles thereto) pre-categorised into the respective category(ies) corresponding to the input search query. Note that this activity represents the entirety of the search process, thus at no stage is a keyword style search carried out, nor are the results of such a search then categorised into a plurality of separate categories, rather the result of the search is simply the sum of web-sites categorised as belonging to whichever category(ies) the input search query is matched.
EP 1 217 542 describes a system in which a mobile communications device (e.g. a mobile telephone) includes a personalised ontology which is used to help a user to identify favourite services by storing these (or links to them) in corresponding nodes of the personalised ontology. The description is somewhat unclear about exactly how a search is carried out, but it appears (especially from
According to a first aspect of the present invention, there is provided a method of automatically searching through a store of electronic documents in order to assist a user in finding a small subset of the total documents available to the user which are of especial interest to the user (at that moment), the method comprising, controlling a user interface to permit a user to enter a search term comprising one or more keywords, carrying out a keyword based search using the search term, categorising the documents returned by the search into a plurality of distinct categories, and controlling the user interface to present the documents returned by the search, or references thereto, in a grouped manner such that documents of a particular category are grouped together, wherein the categories are selected and/or dynamically generated in dependence upon the search query.
Preferably the categories are selected and/or dynamically generated by processing the search query together with a common ontology or set of ontologies. Preferably the common ontology or set of ontologies is personalised according to preferences associated with the user.
Preferably at least one or some of the categories are dynamically generated from the ontology by combining concepts from the ontology to form compound categories. For example, if a first concept in the ontology (e.g. concept A) has an attribute (e.g. Attribute B) which corresponds to a second concept in its own right in the ontology (e.g. Concept B), which second concept has a number of sub-concepts or daughters (e.g. sub-concepts b1, b2, b3) then the selected categories may include compound categories formed by combining the sub-concepts of the second concept with the first concept (e.g. to form categories b1A, b2A and b3A into which retrieved documents which are instances of A and have attributes of types b1, b2 and b3 are categorised respectively). For example, an ontology might include the concept “restaurant” with attributes “cuisine style”, “location” and “telephone number” of which at least “cuisine style” might be a concept in the ontology in its own right with sub-concepts “Indian”, “Modern European”, “British” and “Vegetarian”, etc. in which case at least the following compound categories could be formed “Indian Restaurant”, “Modern European Restaurant”, “British Restaurant” and “Vegetarian Restaurant”. Note that if a third concept were also to have “cuisine style” as an attribute (e.g. the concept “Cookery book”—perhaps itself a sub-concept of the concept “book”) then similar compound categories could be formed based on this third concept (e.g. “Indian Cookery book”, etc.).
Preferably, the method further includes selecting preferred categories for presenting to the user more prominently based on historical actions of the user and dynamically adjusting the presentation of categories to the user to alter the prominence with which categories are displayed based on the user's actions. Examples of this will be set out in greater detail in the specific description following.
Many different methods of presenting the results of the search to the user may advantageously be employed, depending on the nature of the results. If there are a large number of different categories within which the results are deemed to fall, it may be appropriate to initially display to the user only the categories rather than any actual documents (or references thereto). Where there are only a few different categories, it may be appropriate to display some actual documents (or references thereto), but to clearly indicate the category to which they belong, etc.
Preferably, the method includes using the stored history of the user's previous actions in combination with hierarchical information contained in the ontology, to generate a new set of categories to present to the user which are generated by expanding an attribute of one category in accordance with the stored hierarchy of the concept in the ontology to which the attribute refers to generate multiple sub-categories, and grouping search results in accordance with the values of the selected attribute into respective sub-categories. An example of this is set out below in the specific description.
It will be apparent that a typical implementation of this method will involve installing and executing a computer program running on a server computer to which remote computers have access. Thus the step of controlling a user interface, both to permit a user to enter a search term and to present the results of the search to the user, may be performed by creating and transmitting to the remote computer at which the user is located Hyper Text Mark-up Language (HTML) pages including active links to other documents accessible by the remote computer (e.g. over the Internet) and, in order to allow the user to enter a search term, including a text entry field the contents of which may be transmitted by the remote computer to the server on which the computer program implementing an embodiment of the present invention is running, for example by means of an HTML request from the remote computer including the contents of the text field (possibly in a pre-processed manner).
According to a second aspect of the present invention, there is provided a server computer for assisting a user, using a remote device, to select a subset of documents from a set of documents available to the user stored on devices connected to the same data network to which the server and the remote device are connected, the server including means for receiving from the remote terminal a search term comprising one or more keywords, means for carrying out a keyword based search using the search term, means for categorising the documents returned by the search into a plurality of distinct categories, and means for returning output data to the remote terminal which permits the remote terminal to present to the user the documents returned by the search, or references thereto, in a grouped manner such that documents of a particular category are grouped together, wherein the categories are selected in dependence upon the search query.
Further aspects of the present invention include a computer program or a suite of programs for carrying out the method of the first aspect of the present invention and carrier means carrying such a program or programs.
In order that the present invention may be better understood, embodiments thereof will now be described, by way of example only, with reference to the accompanying drawings in which:
Referring to
Referring to
Of these data stores and program modules the lexicon 23 and document locator and ranking module 25 may be formed from any suitable conventional embodiment of these components (see for example WordNet's web site currently available at http://www.cogsci.princeton.edu/˜wn/ for details about how to form a suitable lexicon data store 23 and see U.S. Pat. No. 6,526,440 for details about how to provide a suitable document locator and ranking module 25) and therefore these components will not be described in greater detail below, except as necessary to clarify the operation of the present embodiment. In this embodiment we use WordNet to provide the lexicon 23 which, in addition to listing multiple word senses, also lists synonyms, antonyms, hyponyms, etc. and sets out word hierarchies such as “Dog” is a sub-category of “Animal”, etc.
In the present embodiment, the user profile store 21 stores details about previous actions taken by each user when using the search server, as well as details about the user. The store may also store modifications to the or a common ontology (or a set of common ontologies) stored in the ontology database which are personal to the respective user. Details about this possibility and the format of a user's previous actions are given below.
In the present embodiment, the or each common ontology is represented within data store 22 using the OWL Web Ontology Language, details of which can currently be found at http://www.w3.org/TR/owl-features/, however any ontology language could be used for this purpose.
As is well known, in the field of information technology, an ontology is typically formed by a number of nodes arranged together in a tree like structure such that a typical node has one parent node and one or more children nodes. The root node is a special node which has no parent (it is the ultimate parent of all other nodes in the ontology) and leaf nodes are special nodes which have no children. Each node has a label (a word or phrase specifying what the node represents) and may have one or more attributes (each of which will have its own name and a value or list of values, etc.). Apart from the inheritance hierarchy, each node can further specify its relationships with other nodes such as Dog and Cat are disjoint.
In order to illustrate this typical arrangement of an ontology,
The “Currency” node 318 is not illustrated as having any attributes, but it is illustrated as having two individuals belonging to it, namely the US dollar and the UK Sterling pound. The “currency” attribute of the “price” node 316 is an example of an attribute which refers to another concept/node within the ontology, and, in the illustrated portion in
Note that the ontology partially illustrated in
As will be recognized, such a personalized version of a common ontology can be formed by setting constraints on the allowable values or ranges of values of certain attributes or properties of concepts within a common ontology or set of ontologies.
Note that in addition to being able to obtain information from general web servers via the World Wide Web (WWW), in an alternative embodiment, the search server 20 could be located within the same intranet domain as the user and could additionally therefore (or alternatively) obtain information from data sources within the intranet, etc.
When a user wishes to carry out a search, the user accesses the home web page of the search server 20 which is then displayed on the screen of the remote terminal 10 from which the user is accessing the search server.
The search server 20 assumes that the text entered by the user is a natural language query such as a phrase or sentence. Consider the following example query therefore:
“Mobile phone with message”
When the search server receives this message, the first step is to “chunk” the query into phrases. There are many known algorithms for performing such chunking. The one used in the present embodiment is based on the General Architecture for Text Engineering (GATE) which was developed at Sheffield University and is consequently often referred to as the “Sheffield Gate” system (for details of which see http://gate.ac.uk). With this chunking algorithm, the above query is turned into two “chunks”, namely “Mobile phone” and “message”. (Note for an additional example of a suitable “chunking” algorithm, see the “Key Phrase Extraction” section of co-pending UK patent application No. 0421754.3).
The search server 20 then attempts to map each “chunk” to one or more nodes within the common (or personalised) ontology. In the present embodiment, the mapping process is performed by firstly looking for any direct matches between the respective “chunk” and any nodes in the ontology. If that succeeds, then the directly matching nodes are stored and the process ends. If there are no direct matches, the “chunks are separated into words and these are “stemmed” (again see http://gate.ac.uk or co-pending UK patent application No. 0421754.3 for details of a suitable stemming algorithm) and the algorithm looks for partial matches between the stemmed words and nodes in the ontology (e.g. if there is just one common word or part of a word between the node label and the stemmed word(s)). If some matches are found in this way, then each matched node is stored and the process ends. If no matches are found with the stemmed words, then any synonyms (i.e. words having the same meaning) of the stemmed words are looked up in the lexicon and used to search for matches with nodes of the ontology, which, if found, are stored before ending the process. If this fails to find any matches, then the lexicon is used to find generalisations and specialisations of the stemmed words and these are used to look for matching nodes in the ontology. If some matches are found in this way, then each matched node is stored and the process ends. If no matches are found the process ends and, in the present embodiment, no categories are selected and the search proceeds in an entirely conventional way and the search results are presented to the user in an ordinary uncategorised list of the results ordered by some measure of relevance.
In the present example therefore, the chunk “Mobile phone” is directly matched to the “Mobile Phone” concept/node 328. The “message” chunk in the (telecommunications biased) common ontology of the present embodiment is not directly matched to any node/concept in the common ontology. However, after performing word stemming of “message” to get “message” this is then partially mapped to both individual node 334 (“message” is partially mapped to the word “message” in the label “short message service”) and to concept/node 340 (“message” is partially mapped to the word “messaging” in the label “Instant Messaging Application”).
As part of the matching process, some techniques may be employed to prioritise certain matches over others based on the context of the input search query as a whole. A number of different techniques may be used (separately or in combination) in order to achieve this. For example, the ontology itself may be used to try to determine whether certain possible matches are more likely than others. For example, in the common ontology in the present example, node 328 (to which the first chunk of the input query has been matched) has as an attribute, a reference to node 332, which has as an individual member node 334 (which is one of the two possible mappings of the second chunk). On the other hand, there is no such linkage between nodes 328 and 340 (the other possible match of the second chunk). On this basis the possible mapping of the second chunk “message” of the input query to node 334 may be preferred over the possible mapping to node 340 (of course this assumes that Instant Messaging is not represented in the common ontology as a mobile phone feature—if mobile phones started including such a feature than the ontology should be updated to reflect this and then neither mapping would be preferred over the other).
Another technique for helping to prefer one matching over another may use a database of related word lists. Such related word lists could be generated automatically (either in advance and then stored or on the fly), for example, using some of the features of WordNet. For example, consider the input query “software in java”. This would be chunked into “software” and “Java”. These two terms could be looked up in the lexicon. In the case where the lexicon is formed using WordNet the first term has only one sense, whereas “Java” returns 3 different senses (an island, a type of coffee and an object oriented programming language); one could generate related word lists for each of these senses (e.g. using the definitions of each of the three senses, possibly with the definitions resulting from searching for immediate synonyms, hypernyms and hyponyms of each of these senses as well) and then use the related word lists to see if the first chunk (i.e. “software”) appears in any of these lists (in this case it should appear only in the related word list corresponding to the third sense), and if so one can deduce that the user probably intended that meaning of the term. In a large, general ontology it is likely that each of these three different senses of the word java will have its own separate node/concept. Each such node could be explicitly linked to a corresponding one of the senses of the word java known by the lexicon, or alternatively a process of looking for other matching words from the related word lists in parent nodes (or otherwise closely related nodes) within the ontology could be used to match the determined sense to the corresponding node in the ontology.
If the matching process is successful in finding some matches with nodes in the ontology, then the matched nodes are used as categories into which the search engine will attempt to place the results of the search. Thus, in the present embodiment, the original search query (e.g. “Mobile phone with message”) is entered to the document locator and ranking module 25 (which, as mentioned above, is simply a conventional search engine), which returns a ranked list of “hits”. The ranked “hits” are then input to the document categorisor module 26 which uses an algorithm to attempt to categorise each of the returned documents into one of the matched categories. In the present embodiment the algorithm used by the categoriser simply comprises storing a list of keywords in respect of each node of the ontology and searching each returned document to see if it contains the listed keywords. If the document contains at least a minimum number of the listed keywords it is classified as belonging to the respective category. Clearly it may be possible to have more sophisticated rules by having, for example some anti-keywords, which if present will make the document less likely to be categorised into the respective category, etc. Also, key phrases may appear in the list and the distance (in terms of number of words) between keywords or phrases can also be used to help in the categorisation, etc.
Note that if the matched concepts have sub-concepts (i.e. children nodes, for example in the case of the concept 328 “Mobile phone” it could have sub-concepts such as “Nokia”, “Sony Ericcson”, etc. In such a case, if any of the documents can be categorised into either a parent or a child concept, then the document is categorised into the child document as this is more specific than the parent concept/node.
It will be apparent to the reader that the left-hand panel 512 presents to the user a display which is similar to the classic directory tree structure view provided by many operating systems and other applications in which directories and sub-directories are arranged in a hierarchical arrangement. One significant difference with the display in the left-hand panel of the present embodiment however is that the order in which the nodes are displayed, as well as the depth to which nodes are expanded, is highly variable and configurable. This contrasts with a standard viewer in which the depth to which the tree is expanded along any particular branch or branches is variable (typically the system will have some default sort of settings for how expanded the tree should be—e.g. by keeping the tree as unexpanded as possible except for the branch containing a certain selected file or directory, or by remembering the exact state of the tree when the respective application was last closed, etc., with the possibility of the user overriding any default settings to manually determine which branches are expanded and to what extent). However, in any event the actual ordering of the nodes is not variable in a standard conventional viewer (and is typically done simply in alphabetical order). By contrast, in the present embodiment, the order in which nodes appear in the tree view of the left hand panel 512 is varied in such a way that in general the nodes believed to be of most interest at present to the user are presented towards the top of the panel with nodes which are increasingly believed to be of less relevance being presented generally lower down in the left-hand panel. The extent to which this may be achieved is constrained somewhat by still wishing to present parent nodes as higher up than their children nodes respectively (in the present embodiment) and indented to the left. However by placing the tree view in a scroll-pane this can be accommodated to some extent (i.e. by placing parent nodes of the most relevant node above the current position of the “top” of the sliding pane such that they are out of view unless the user scrolls upwards to see them).
In the present embodiment, a number of strategies are used to try to determine the best order in which to present nodes in the left-hand panel in order to achieve the objective of seeking to present the most relevant nodes at the top of the panel. The most important such method is that of referring to the past actions of the respective user as stored in the user profile store 21. In the present embodiment, these are simply stored as triplets of <user id, category 1, category 2> where user id is a unique identifier of the user in question, category 1 is a category viewed (i.e. selected and thus brought into focus by the user in the left-hand panel 512) and category 2 is the next category viewed by the user after viewing category 1. Up to a certain number of these will be stored (in a first-in first-out manner) in the database providing the user profile store 21. When the user clicks on a category in the left-hand panel 512, the user profile store 21 is searched for all triplets for the respective user for which the clicked on category appears as category 1. If some of these triplets show that one category appears as category 2 more often than any other, then an attempt will be made to bring this category as high up the tree view list as possible, and so on for less popular follow-on categories. Where there is a tie in terms of the frequency with which categories appear as category 2, the most recent triplets are preferred over older ones, for ordering purposes.
If the user is highlighting a category for the first time (or at least for the first time in a sufficiently long time that the user profile store 21 has already deleted any such record), the history can be used simply as a general guide as to categories which are popular with the user and these can be presented higher up the order. In an alternative embodiment however, a search could first be performed for any previous history of viewing parent or grand-parent, etc. categories to the current category and determining possible nest categories based on the associated category 2 terms for any such ancestor categories, etc.
Referring back to
As mentioned above, the arrangement of nodes in the left-hand panel 518 is automatically reconfigured on a dynamic basis in dependence upon the user's past actions, etc. In the present embodiment, such reconfiguration is done either after a predetermined amount of time has lapsed since a new category has been highlighted by the user, or after the user has clicked on a URL in the right-hand panel 514, however, other triggers could be used in alternative embodiments.
As mentioned above, the current category is used together with the user's history in order to determine the ordering of categories in the left-hand panel 512, where possible, when the left-hand panel is dynamically changed without a new search query having been entered. If, however, the user has no history, the category of the first attribute associated with the current page category which corresponds to a concept defined in the ontology (e.g. Mobil Phone concept 328 has an attribute has-mobile-phone-features whose type is that of “mobile phone feature” which corresponds to concept “Mobile Phone Feature” 332) is displayed immediately beneath the currently in-focus category when the rearrangement of the categories in the left-hand panel 512 is triggered. Note that when this is done, the category will in a sense appear twice because it will be available both immediately underneath the in focus category of which it is an attribute and also in its own right as it were as part of the tree structure representing the entire ontology through which the user is able to navigate at will much as with an ordinary tree viewer.
If the history search is successful, all of the second categories found (in order of frequency and/or recency) are displayed beneath the currently in focus category followed by the previously displayed hierarchy. As an example, assuming the user has brought into focus a “Sony product” category and then triggered a dynamic re-arrangement of the left-hand panel (e.g. by viewing a URL corresponding to that category), if the user history profile shows that after viewing the Sony product category he often goes to the “Retailer” category, then the Retailer category will be displayed underneath the Sony product category. In a variant, as well as the next category, a part of or the entire downstream hierarchy of the next category is also displayed. Thus in the case that the Retailer category has sub-categories of High-Street-Shop and Online-retailer, these would also be displayed underneath the Retailer category. In the event that instead of (or in addition to) sub-categories, a particular category has individuals, these can be displayed under the category.
Note that the user may not always want the tree view in the left-hand panel to change dynamically and in such cases he can configure an option to disable this feature. Furthermore, since the re-arrangement is performed by the search server generating and transmitting a new HTML page to the remote device, the user may use the backwards and forwards buttons on his web browser to navigate between different arrangements as well if he wishes to return to an earlier arrangement, etc.
In one embodiment, instead of including all of the nodes (with most irrelevant nodes being “collapsed”) representing the entire ontology as well as any dynamically generated categories, only the relevant categories may be displayed. Alternatively, the left hand panel could display two separate trees (with separate root nodes) one of which is the entire ontology (in collapsed form so you only see the root node) and the other of which contains just the categories relevant to the respective search query.
An additional feature provided in the present embodiment is for the system to sometimes look ahead in order to determine how best to display the node hierarchy in the left panel. The look ahead uses two following categories from the user history. For example, consider a case where a user is searching through an internal database of students within a university department. In this database, each student includes amongst its details, details of the course(s) being taken by that student:
Student
The courses offered by the department are also stored in the database in a hierarchical fashion:
Courses
If the user's history shows that he frequently follows the route Student>Courses>Student then when the user clicks on the category Student the left-hand panel then the system deduces that the user may be interested in knowing about students as categorised by the course(s) they are taking. As such, a search for a student results in the following display appearing in the left-hand panel:
AI Students
Where the most appropriate attribute (as determined by the user's history profile) of the category student has been expanded according to the hierarchy of the attribute's (i.e. course's) associated concept (i.e. course) to form a compound category.
Note that this example also illustrates how the present invention may be applied to searching through structured datasources such as structured databases (e.g. relational databases). In particular, the present invention is particularly well suited to structured data sources comprising a large number of disparate data sources which have been integrated using an ontology based integration device such as that described in the following published International patent applications: WO 02/080026; WO 02/080028; WO 02/080029; and WO 03/0025. In such cases, instead of sending the original search query as entered by the user to a conventional keyword based search engine, a structured query is generated from the input query after pre-processing the input query using the common ontology or ontologies to rule out unlikely structured queries, etc. The above mentioned patent applications provide more detail on how to convert a natural language query into an appropriate set of structured queries for accessing an integrated set of heterogeneous data sources and are hereby incorporated into the present application by way of reference in this respect. Naturally, when using structured data sources, the results will already be appropriately categorized in terms of the common ontology and so this process will not be required. However, the manner in which the information is presented to the user with the left hand panel of the GUI altering the order in which categories are presented is unaffected by the nature of the data sources being searched.
Number | Date | Country | Kind |
---|---|---|---|
0502259.5 | Feb 2005 | GB | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/GB2006/000359 | 2/2/2006 | WO | 00 | 7/31/2007 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2006/082410 | 8/10/2006 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5857179 | Vaithyanathan et al. | Jan 1999 | A |
5924090 | Krellenstein | Jul 1999 | A |
6385600 | McGuinness et al. | May 2002 | B1 |
6385602 | Tso et al. | May 2002 | B1 |
20020078016 | Lium et al. | Jun 2002 | A1 |
20030088553 | Monteverde | May 2003 | A1 |
20030131070 | Stroebel et al. | Jul 2003 | A1 |
20050065908 | Silverbrook et al. | Mar 2005 | A1 |
20050160107 | Liang | Jul 2005 | A1 |
20060074980 | Sarkar | Apr 2006 | A1 |
20090018891 | Eder | Jan 2009 | A1 |
Number | Date | Country |
---|---|---|
1 217 542 | Jun 2002 | EP |
WO 0146870 | Jun 2001 | WO |
WO 0241190 | May 2002 | WO |
WO 0241190 | May 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20080140657 A1 | Jun 2008 | US |