The present invention relates to connecting an end user with locations on the Internet based on codes inputted by the end user.
Bar code scanning technology has been in use for quite some time. Such bar codes appear on most items encountered by consumers every day—from grocery items to driver's licenses. Other types of codes (such as private codes), and methods for acquiring such codes, have been and are continuing to be developed. Bar codes and other codes allow for fast and easy identification, tracking, and inventory of items as well as storage of data relating to such items. As bar codes have become a common and familiar part of the consumer experience, so has the use of web services and applications. Different types of web services and applications continue to grow in number and popularity.
Identifying ways of converging these two apparently disparate technologies to create a product that provides mobility, simplicity, accuracy, convenience and efficiency to web applications and services would enable companies to reduce costs (by replacing formerly manual tasks with bar coding technology), increase revenue (by offering barcode-enabled advertising alternatives that allow consumers to learn about products, prices, store locations etc.), increase productivity (by automating sales force tasks such as product ordering), and improve customer loyalty (by offering barcode related value-added services to customers).
The present invention provides systems and methods related to the convergence of bar code and other coding technologies and web-based applications and services, thereby fulfilling a need present in the prior art.
In particular, the present invention is directed to a method and system for directing an end user to a location on a network based on a code inputted by the end user. The end user is associated with at least one of the following: an end-user country selection, an end-user language selection, a service category, an access media type, and the presence of an access certificate. The access media can be one of at least two types (at least one of the types being a bar code scanner). A database that includes a plurality of entries is provided. Each of the entries is associated with a machine-readable code and includes one or more different network addresses. The different network addresses are associated with different providers. Code information associated with one or more scans of machine readable codes, made by the end-user with a remote scanning device, is received at a network site. In response to the scan information, entries associated with the machine-readable codes scanned by the end-user are retrieved from the database. At least some of the entries include information that is not relevant to at least one of the end-user country selection, the end-user language selection, the service category, the access media type, and the presence of an access certificate. Based on at least one of the end-user country selection, the end-user language selection, the service category, the access media type, and the presence of an access certificate, one or more network addresses are selected from the retrieved entries. The end user is connected with the one or more network addresses selected.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.
The accompanying drawings, which are included to provide further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention.
In the drawings:
Reference will now be made in detail to the preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
The present invention is directed generally to connecting a unique identifier, such as a bar code, to a URL that points to a web page on the Internet. The connection is tailored based on a number of different criteria including, for example, a particular language of the end user, the country of the end user, service categories chosen by the end user, and the media by which the end user accesses the system.
Service layer 102 contains collections of Links that are specific to particular companies (i.e., companies sponsoring the web pages to which the URLs point), each sharing properties of a particular service (i.e., groupings of Links that share a common characteristic). The shared characteristic may be, by way of example, an end user country of origin, language preference, profession, or access media device type. Other types of services based on any shared characteristics can be defined in accordance with the present invention.
For example, a French medical company marketing a painkiller product available only in France may create a service pursuant to which URLs pointing to marketing information on its painkiller product are presented only to users in France. Thus, the medical company could, for example, define two Links—a global Link and a French Link. A French user would be directed to URLs within the French Link, but everyone else in the world would be directed to URLs within the global Link. The medical company would, thus, have the ability to engage in a country-wide campaign for the painkiller for France, but still maintain the information about the product on the Internet for the rest of the world. A Canadian company may want to create two language preferences services, namely, a service for Links containing URLs directed to web pages written in English and a service for Links containing URLs directed to web pages written in French. By way of further example, a medical company may wish to present to doctors different URLs pointing to information for a painkiller product than those it presents to patients. The medical company would then create two services (one for doctors and one for patients) each of which holds a Link for different information relating to the painkiller product.
In some embodiments, a company may want to create services for Links to which only certain users or groups of users can obtain access. This can be accomplished using certificates. For example, one service may be created for Links containing URLs that can be accessed only by individuals that present a particular certificate. In a particular example, the French medical company may create a service that includes Links containing URLs that can be accessed only by individuals with a certificate proving that the individual is a doctor.
Category layer 103 controls how URLs are presented to the end user. Each service in service layer 102 may belong to a particular category. A category is a group of services that all share a common characteristic. The end user may select the categories of Links with which the end user is presented. Thus, for example, the end user may indicate that it is only interested in being presented with URLs relating to a particular product or, for example, to shopping sites.
One exemplary category is a product category 105 (shown in FIG. 1). All services relating to a particular kind of product will be grouped into product category 105. Information category 106 groups services that pertain to third party information about the service. Thus, for example, upon scanning a barcode for a video tape of a movie and choosing an information category, the end user will be presented with URLs pointing to reviews of the movie. Shopping category 107 groups services pertaining to Links with URLs identifying where an item can be purchased. Another type of category, an application category, groups Links by application, rather than merely by service, which implies a more advanced interface to the system. The API of the present invention provides access to a number of system-, device- and user parameters. A call to an application can be of several types, a simple re-direct or a general call with a flexible protocol. The APIs may differ depending on the type of access. Categories can be added, removed or changed on demand. Categories in addition to those described here can be created and used in the inventive system within the scope of the present invention.
Access layer 104 controls the URLs that are presented to the end user depending on the access media used by the end user. The different types of access media a user may employ include, by way of example, bar code readers (portable or tethered to a personal computer), personal computers, WAP enabled mobile phones, and personal digital assistants. Each grouping of Links in the category layer are specified as belonging to a certain access type. Thus, Links in a given category are tailor-made for a specific access type, which ensures that each device receives information that the specific device can handle. For example, categories may include Links that are tailored to be shown on the web or using WAP services. In another example, categories may include Links that are tailored to be heard as voice/music using a mobile phone. In particular, a record company wanting to promote one of their artists can have a Link (including URLs pointing to a web site where the artist's music track can be heard) assigned to a category for mobile phones. This music track can then be accessed using a barcode reader connected to a mobile phone. In another example, some categories may contain Links that are tailored to be sent back using Short Message Service (“SMS”) to a mobile phone. In particular, an end user may scan a barcode on a book and receive an SMS back with a short review of the book. The end user may scan a barcode on a poster for a concert and receive an SMS back with an electronic ticket for the concert. Other access types can be provided for in the inventive system within the scope of the present invention.
Preferred embodiments of a central relational database and a cache database that may be used in connection with connecting end users to URLs in accordance with the present invention are described with reference to
With reference to
Table 410 is used to store product information and, in particular, Links based on unique identifiers from table 409 and URLs from table 421. For each product identified in table 410, information regarding the company sponsoring the product can be identified from table 411, along with information regarding the user that inserted the product into the system (identified from table 401). Each product identified in product table 410 is associated with a particular service (identified in table 413), and a category (identified in table 412).
Company data stored in table 411 is associated with data relating to a particular market, stored in tables 415, 416 and 417. Service data stored in table 413 is associated with channel information stored in table 418 and channel type information (i.e. access media device type) stored in table 419, as well as service information stored in table 414. Keyword data, stored in table 420, is used to further separate services that share a common characteristic within a category. For example, two shopping services A (a book store) and B (a pet shop) are separated by the keywords bookstore for service A and pet shop for service B. Service information stored in table 414 relates services of a particular type (defined in table 413) that are owned and shared by a number of companies (defined in table 411).
The lookup procedure can be described with reference to
Also, for each service ID, using service table 505, a company ID (identifying the company that has inserted the service into the system) is identified. Using the company ID, company information is obtained from company table 506. The company information includes, for example, whether a parent company exists as well as whether the company is active in the system. Based on the reference country ID in company table 506, country data is obtained from reference country table 507.
Returning again to service table 505, a service data ID is identified. Using the service data ID, service data information is obtained from service data table 508. The service data information includes, for example, the name for the service, whether a priority has been set, the type of service, whether any certificates are required to access the service, and a description of the service. The service information (in particular, “pre_url” and “post_url”) allows for the construction of URLs from strings defined in the service. “Service hook” determines whether such URLs should be constructed and what type of URL compositing should occur. From service data table 508, a channel ID is determined, which allows channel data (i.e. category information described with reference to
The superset of data identified is then filtered to obtain Links that are particular to the current end user session. In particular, as discussed in more detail above, Links that are not associated with the country from which the end user has inputted the code; the preferred language of the end user; the channel (i.e. categories); and/or the channel type (access media) being used by the end user, are removed. In addition, if a certificate is required for access to a particular Link (identified in service data table 508), and the end user does not possess the required certificate, such Links are removed. The information relating to the country from which the end user has inputted the code; the preferred language of the end user; the channel and/or channel type may be provided directly or automatically from the user's access media to site 604 (identified in
A preferred embodiment of a system 600 that may be used to support the linking of unique identifiers to URLs using databases of the type described above is illustrated with reference to FIG. 6. Variations on the components and configuration of the system 600 will be known to those skilled in the art and are within the scope of the present invention. The system described herein is highly scalable, thereby enabling it to handle a large number of Links. Further, the system is also designed to handle many end user lookups per second. The system also provides for both global and local load balancing, is stable and highly reliable.
System 600 includes a central relational database 601 (e.g., as described with reference to
Updates to the system 600 (for example, the addition of new Links) are handled through the central relational database 601 and are propagated to the cache-server databases 603. In particular, when changes are made in central relational database 601, that information is extracted by the master cache server 607 (recording the change in its transaction log database) and broadcasted through net layer 608 to the different database sites, from which the data is retrieved by the cache servers 602 and stored in cache databases 603. The transaction log works as a persistent buffer such that cache servers 602 that are brought on line can obtain transactions missed while offline.
Lookups are handled from the Internet through the global load balancing layer (GLB) 609 to whichever web server 610 at the site has the shortest latency and load. The web server 610 connects to any of the cache servers 602 at the site and performs the lookup in the various tables (as described with reference to FIG. 5). The result of the lookup is then transmitted back to the end user client 611 via the web servers 610. As lookups are being performed, statistics for each lookup request are gathered by the cache servers 602. That data is then sent at regular intervals back to the master cache server 607 that inserts the data into the central relational database 601.
In the preferred embodiment, operations in the system 600 can be performed in two modes: read only or read write. When in read write mode, the operations to the database are guarded through transactions, whereas, in read only mode, the system will bypass normal transaction handling. In this manner, lookup operations will not interfere with insert or delete operations, thereby allowing lookup operations to be performed without transaction locks, which greatly enhances the performance of the system.
Company accounts are managed through an administration site internal to system 600, which is also connected to the central relational database 601. Company clients 612 (i.e. local clients at companies sponsoring web pages to which the URLs point) can connect securely using a standard web browser through one more or HTTPS servers (i.e. web servers 610) at each site. The connection is load balanced just as the end-user lookup requests. An application program interface (API) provides a remote way of accessing central relational database 604. This allows for company clients 612 that are running locally at the company to connect to and change the contents of the Mcentral relational database 604 (for example, to access their accounts and manage their Links). The API requests are directed from the web servers 610 to one of cache servers 602, that transmits the request back to one of master servers 607, that connects to the central relational database 604 and performs the request. The result is transmitted back from the cache master server 607 to the cache server 602, to the web server 610, that transmits it back to the API and the remote company client 612.
Thus, for example, a plugin to a desktop publishing program allows a newspaper editor to retrieve and link up barcodes that can be used in magazines. The plugin allows the editor to login to his account in the system 600 and directly manage his Links from within the desktop publishing program. Each barcode can be retrieved through the tool as an image to be printed in the magazine.
As mentioned previously, a preferred embodiment of the system 600 uses global load balancing in order to meet demands in different parts of the world. This is also important for ensuring low latency and high reliability. The global load balancers 609 that the system 600 uses act like a global web server that routes requests through to the most suitable site. In particular, when a DNS request is made to a global load balanced system (such as system 600), load balancers 609 intercept the request and, depending on different parameters such as server health, site capacity, and round trip time, return the IP address of the site which is most suitable. At each site, local load balancing is used to increase performance and ensure site level reliability. In particular, the local load balancer distributes the load between local servers at a site to increase the lookup capacity at a particular site. Extending performance of the system 600 is, thus, simplified. In the event a need arises to add more capacity to a particular site, new hardware can be added to that site. In the event more capacity is needed in another part of the world, a new site can be added to the global system. Other load balancing schemes will be known to those skilled in the art.
In step 702, code information associated with one or more scans of machine readable codes, made by the end user with a remote scanning device, is received at a network site. In step 703, in response to the scan information, entries associated with the machine-readable codes scanned by the end user are retrieved from the database. At least some of the entries include information that is not relevant to at least one of the end-user country selection, the end-user language selection, the service category, the access media type, and the presence of an access certificate. In step 704, based on at least one of the end-user country selection, the end-user language selection, the service category, the access media type, and the presence of an access certificate, one or more network addresses are selected from the retrieved entries. In step 705, the end user is connected with the one or more network addresses selected in step 704. In some embodiments, in step 706, the network addresses are sorted based on a provider-indicated priority.
Although the foregoing description is directed to the preferred embodiments of the invention, it is noted that other variations and modifications will be apparent to those skilled in the art, and may be made without departing from the spirit or scope of the invention.
This application claims priority to U.S. Provisional Patent Application No. 60/252,906 entitled “Scalable distributed database system for linking URNs to Internet information” filed Nov. 27, 2000, which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4042113 | Duncan et al. | Aug 1977 | A |
4752675 | Zetmeier | Jun 1988 | A |
4797818 | Cotter | Jan 1989 | A |
4964043 | Galvin | Oct 1990 | A |
5122959 | Nathanson et al. | Jun 1992 | A |
5237157 | Kaplan | Aug 1993 | A |
5278396 | McGaha | Jan 1994 | A |
5434394 | Roach et al. | Jul 1995 | A |
5444444 | Ross | Aug 1995 | A |
5478989 | Shepley | Dec 1995 | A |
5496071 | Walsh | Mar 1996 | A |
5539635 | Larson, Jr. | Jul 1996 | A |
5583487 | Ackerman et al. | Dec 1996 | A |
5583994 | Rangan | Dec 1996 | A |
5611051 | Pirelli | Mar 1997 | A |
5624265 | Redford et al. | Apr 1997 | A |
5625776 | Johnson | Apr 1997 | A |
5630125 | Zellweger | May 1997 | A |
5640193 | Wellner | Jun 1997 | A |
5657222 | Randolph | Aug 1997 | A |
5664110 | Green et al. | Sep 1997 | A |
5694551 | Doyle et al. | Dec 1997 | A |
5696898 | Baker et al. | Dec 1997 | A |
5715314 | Payne | Feb 1998 | A |
5761499 | Sonderegger | Jun 1998 | A |
5804803 | Cragun et al. | Sep 1998 | A |
5825002 | Roslak | Oct 1998 | A |
5832457 | O'Brien et al. | Nov 1998 | A |
5848413 | Wolff | Dec 1998 | A |
5860068 | Cook | Jan 1999 | A |
5869819 | Knowles et al. | Feb 1999 | A |
5870552 | Dozier et al. | Feb 1999 | A |
5872588 | Aras et al. | Feb 1999 | A |
5890136 | Kipp | Mar 1999 | A |
5893910 | Martineau et al. | Apr 1999 | A |
5899700 | Williams et al. | May 1999 | A |
5905248 | Russell et al. | May 1999 | A |
5905251 | Knowles | May 1999 | A |
5907836 | Sumita et al. | May 1999 | A |
5913210 | Call | Jun 1999 | A |
5918211 | Sloan | Jun 1999 | A |
5930474 | Dunworth et al. | Jul 1999 | A |
5930768 | Hooban | Jul 1999 | A |
5933829 | Durst et al. | Aug 1999 | A |
5937404 | Csaszar et al. | Aug 1999 | A |
5938727 | Ikeda | Aug 1999 | A |
5940074 | Britt, Jr. et al. | Aug 1999 | A |
5940595 | Reber et al. | Aug 1999 | A |
5950173 | Perkowski | Sep 1999 | A |
5956483 | Grate et al. | Sep 1999 | A |
5957695 | Redford et al. | Sep 1999 | A |
5963916 | Kaplan | Oct 1999 | A |
5966440 | Hair | Oct 1999 | A |
5969324 | Reber | Oct 1999 | A |
5970469 | Scroggie et al. | Oct 1999 | A |
5974222 | Yuen et al. | Oct 1999 | A |
5978773 | Hudetz et al. | Nov 1999 | A |
5979757 | Tracey et al. | Nov 1999 | A |
5983199 | Kaneko | Nov 1999 | A |
5983221 | Christy | Nov 1999 | A |
5987440 | O'Neil et al. | Nov 1999 | A |
5991737 | Chen | Nov 1999 | A |
5992752 | Wilz, Sr. et al. | Nov 1999 | A |
5995105 | Reber et al. | Nov 1999 | A |
6006242 | Poole et al. | Dec 1999 | A |
6006252 | Wolfe | Dec 1999 | A |
6011949 | Shimomukai | Jan 2000 | A |
6012102 | Shachar | Jan 2000 | A |
6026375 | Hall et al. | Feb 2000 | A |
6027024 | Knowles | Feb 2000 | A |
6029141 | Bezos et al. | Feb 2000 | A |
6031621 | Binder | Feb 2000 | A |
6032130 | Alloul et al. | Feb 2000 | A |
6032195 | Reber et al. | Feb 2000 | A |
6034680 | Kessenich et al. | Mar 2000 | A |
6038552 | Fleischl et al. | Mar 2000 | A |
6045048 | Wilz, Sr. et al. | Apr 2000 | A |
6049835 | Gagnon | Apr 2000 | A |
6064979 | Perkowski | May 2000 | A |
6076733 | Wilz et al. | Jun 2000 | A |
6101483 | Petrovich et al. | Aug 2000 | A |
6123259 | Ogasawara | Sep 2000 | A |
6134548 | Gottsman et al. | Oct 2000 | A |
6137950 | Yuen | Oct 2000 | A |
6144848 | Walsh et al. | Nov 2000 | A |
6148331 | Parry | Nov 2000 | A |
6152369 | Wilz, Sr. | Nov 2000 | A |
6154738 | Call | Nov 2000 | A |
6160989 | Hendricks et al. | Dec 2000 | A |
6199048 | Hudetz et al. | Mar 2001 | B1 |
6233682 | Fritsch | May 2001 | B1 |
6246997 | Cybul et al. | Jun 2001 | B1 |
6263313 | Milsted | Jul 2001 | B1 |
6311214 | Rhoads | Oct 2001 | B1 |
6356905 | Gershman et al. | Mar 2002 | B1 |
6384744 | Philyaw et al. | May 2002 | B1 |
6412695 | Reber | Jul 2002 | B1 |
6463585 | Hendricks et al. | Oct 2002 | B1 |
6484943 | Reber | Nov 2002 | B1 |
6542933 | Durst, Jr. et al. | Apr 2003 | B1 |
6760746 | Schneider | Jul 2004 | B1 |
20010011233 | Narayanaswami | Aug 2001 | A1 |
20010013011 | Day et al. | Aug 2001 | A1 |
20010014868 | Herz et al. | Aug 2001 | A1 |
20010027472 | Guan | Oct 2001 | A1 |
20010032251 | Rhoads et al. | Oct 2001 | A1 |
20010054009 | Miller et al. | Dec 2001 | A1 |
20020062261 | Mukei | May 2002 | A1 |
20030018468 | Johnson et al. | Jan 2003 | A1 |
20030019935 | Giannulli | Jan 2003 | A1 |
20030061060 | Tenorio | Mar 2003 | A1 |
Number | Date | Country |
---|---|---|
856812 | Aug 1998 | EP |
856812 | May 1999 | EP |
WO 9526536 | Oct 1995 | WO |
WO9526536 | Oct 1995 | WO |
WO 9701137 | Sep 1997 | WO |
WO9701137 | Sep 1997 | WO |
9820411 | May 1998 | WO |
WO 9916060 | Jan 1999 | WO |
WO9916060 | Jan 1999 | WO |
WO9917230 | Apr 1999 | WO |
0135410 | May 2001 | WO |
0244956 | Jun 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20020063150 A1 | May 2002 | US |
Number | Date | Country | |
---|---|---|---|
60252906 | Nov 2000 | US |