HOME | HANDBOOK | FACTSHEETS | FAQs | RESOURCES | REGISTRATION AGENCIES | NEWS | MEMBERS AREA |
Table of Contents Previous Chapter: 2 Numbering Next Chapter: 4 Data Model
This chapter explains the resolution component of the DOI® System and its ability to provide persistent association of the identifier and related data. The chapter describes in outline the Handle System® used for DOI name resolution.
© International DOI Foundation Last updated: March 21, 2017
Resolution is the process in which an identifier is the input a request to a network service to receive in return a specific output of one or more pieces of current information (state data) related to the identified entity: e.g., a location (URL). Multiple resolution, that is made possible by the Handle System used as the DOI resolution component, is the return as output of several pieces of current information related to a DOI-identified entity specifically at least one URL plus defined data structures allowing management.
In the case of the DOI® System, using the Handle System® as a reference implementation, the resolution is from a DOI name, e.g., 10.1000/140, to one or more (hence "multiple") pieces of typed data: e.g. URLs representing instances of (manifestations of) the object, or services such as email, or one or more items of metadata. New types can be added at any time, making the DOI resolution system extremely flexible and responsive to new requirements. Resolution can be considered as a mechanism for maintaining a relationship between two data entities; an item of metadata is a relationship that someone claims exists between two entities: therefore, such metadata relationships between entities may be articulated and automated by resolution.
Using multiple resolution, a DOI name can be resolved to an arbitrary number of different associated values: multiple URLs, other DOI names, or other data types representing items of metadata. Resolution requests may return all associated values of current information, or all values of one data type; these returned values might then be further processed in a specific "client" software application. At its simplest, the user may be provided with a list of options; more sophisticated automated processes would allow for the automated choice of an appropriate value for further processing.
A DOI name persistently identifies a specific intellectual property entity (object), which may or may not be an Internet-accessible file. The URL provides a specific address on the Internet, related to the entity. These applications of identification are completely different: the first identifies an entity; the second identifies a location (where a specific entity may or may not be found).
The earliest application of the DOI system was for simple, single point resolution, providing a persistent identifier (avoiding "404 not found" messages). Each DOI name has a single URL to which it can resolve. This allows the location of an entity to be changed while maintaining the name of the entity as an actionable identifier, by actively managing in the DOI record the link between a DOI and the URL to which it is resolved. See Chapter 5, Applications, for further information. Lack of persistence of a URL is only the first and the simplest challenge that the DOI system was designed to manage.
Multiple resolution allows one entity to be resolved to multiple other pieces of data or entities.
Resolution of a DOI name can include, but is not restricted to, resolution to associated values such as a location (URL), an e-mail address, another DOI name and descriptive metadata. The referent can be of various types (e.g. abstract "works", physical "manifestations", or performances) and are not always directly accessible in the form of a digital file or other manifestation; i.e. resolution might or might not return an instance of the object. Resolution can also involve one or more intermediate mapping operations.
DOI resolution records can include one or more URLs, where the object can be located, and other information provided about the object to which a DOI name has been assigned, optionally including but not restricted to:
Through automated multiple resolution a DOI name can be resolved to an arbitrary number of different points on the Internet: multiple URLs, other DOI names, and other data types. If the DOI name can point to many different possible "resolutions", how is the choice made between different options? At its simplest, the user may be provided with a list from which to make a manual choice. However, this is not a scalable solution for an increasingly complex and automated environment. The DOI system enables automation of "service requests", through which users (and, more importantly, users' application software) can be passed seamlessly from a DOI name to the specific service that they require.
See below, 3.8.4.3 Resolution of Multiple URLs, and also Chapter 5, Section 5.3 Multiple Resolution Applications for details of current technical implementations of multiple resolution.
ISO 26234 contains the following functional requirements to be met by resolution in the DOI system:
The technology deployed to manage the resolution of the DOI name shall support the functions listed in a) to l) as follows.
The Handle System technology developed by CNRI, and currently administered and maintained by the DONA Foundation, was selected for the resolution task within the DOI system because it matched the resolution requirements identified for the DOI concept, by offering a number of real advantages over other available technologies:
Resolution to multiple, extensible, types of data is a feature of the Handle System technology. While the Handle System has no pre-existing constraints, the DOI system is an application of the Handle System which adds specific constraints appropriate to managing objects of interest for intellectual property transactions and related matters, such as defined metadata elements and operating policies. The Handle System is the resolution component of the Digital Object Architecture, designed to enable information to be managed in a network over long periods of time. The other components of the DO Architecture (Repository and Registry components) are not part of the DOI system, though some DOI implementations may choose to make use of them. (See Chapter 5, Applications, Section 5.7)
The Handle System is made up of local handle services. A local handle service (LHS) is made up of one or more sites, and a site is made up of one or more handle servers. Handle servers store handles. One local handle service is unique, the Global Handle Registry®: the handles it stores, which are the "prefix" handles, makes it the LHS to query to find out which services store all the other handles. DOI names make exclusive use of the assigned prefix 10 as part of the Handle syntax, and are also distinguished from other handles by use of the totality of the DOI system described in this Handbook.
For further information on the DOI use of handles, see the factsheet DOI system® and the Handle System®. See also the Handle.Net software FAQs.
3.5.2 Technical support of DOI name resolution
CNRI continue to provide technical and operational support for the DOI system as a contractor. Further details of the relevant Agreement for Technical Services are available to potential and current Registration Agencies.
3.5.3 Software support for use of DOI names
See DOI Tools for a current list of tools that are in use and under development, with descriptions and links to their sources.
CNRI provide servlets and tools that some users and programmers may find useful. (Contact the Handle.Net Registry Administrator at hdladmin@cnri.reston.va.us for information) These include:
net.handle.batch.DOIBatch
A batch loader for DOI names.
net.handle.apps.admin_servlets
The servlets used for administering handles via the web, useful if you'd like to allow DOI name administration from a local web server.
net.handle.apps.simple
If you do decide to roll your own handle software, this package has a number of examples of how to use the handle client library.
net.handle.apps.tools, net.handle.apps.site_tool
A number of utilities for low-level maintenance of a handle server. Make sure to check there before writing anything along these lines yourself.
Application Programming Interfaces (APIs)
In addition to Java, libraries are available for Python, Perl, and C. See also the Proxy Server REST API described in Section 3.8.3.
The effective operation of the DOI system depends on accurate resolution of a DOI name to the appropriate URL or other data type.
The maintenance of the "state data" is an essential element of the responsibility of the Registrant of the DOI name. Only the Registrant or a service organization acting with the authority of the Registrant is permitted to maintain state data. More sophisticated models of permissions and access to DOI name state data records within a DOI name record are conceivable and the requirements for these are currently being investigated by the IDF.
The data types to which a DOI name can resolve are fully extensible within the Handle System, to permit the DOI name to resolve to any data that is accessible on the Internet.
For use with the data type URL (currently the most common application) we recommend that DOI name data be entered as a full path (e.g. http://www.somepublisher.com/photo/photo#1.gif), rather than a relative reference. Whilst a relative link could be used as the DOI name data, we cannot predict the context in which the DOI name will be resolved, i.e. what the current base html reference will be.
A DOI name could resolve to a Java applet or a CGI script or other dynamic mechanism.
Current Web browser technology requires additional functionality to allow the browser to deal with names of objects, rather than simple locations (a fact common to any approach to naming on the Web). Hence, in order to make full use of DOI name resolution functionality, additional browser features are necessary. It is anticipated that features supporting resolution will commonly be built into browsers in future, and the IDF is in active discussion to encourage this. The required functionality is currently provided in a number of ways.
3.7.1 Custom Resolution Software
The Handle.Net® Software Client Library Java Version is freely available and can be used to develop new resolution clients as needed, either for individual applications or for use in completely separate systems. As resolution is freely available, this could be done entirely independently of the IDF, but we encourage developers to let us know about their applications in order that we may 1) let others know about it if it is public and 2) work with developers to improve their understanding of the DOI system and thus the success of their efforts.
A "resolver plug-in" for Firefox is available from CNRI that enables a browser to resolve a DOI name in the form "doi:10.123/456" without using a proxy server. The user simply downloads and installs the handle extension and then "clicks" on the DOI name (or types the DOI name into the address line in their browser) and the DOI name is resolved directly. See CNRI Handle Extension for Firefox.
Alternatively, without the need to extend their web browsers' capability, users may resolve DOI names that are structured to use the DOI system Proxy Server (https://doi.org is preferred, but the earlier syntax dx.doi.org remains fully supported). The resolution of the DOI name in this case depends on the use of URL syntax: the example DOI name we have been using (doi:10.10.123/456) would be resolved from the address: "https://doi.org/10.123/456". Any standard browser encountering a DOI name in this form will be able to resolve it. The proxy service (both doi.org and dx.doi.org) is accessible over IPv6, and supports DNSSEC.
The use of the proxy server (the gateway between the Handle System and HTTP) does not interfere with the HTTP referrer field (that is, the source of the link is maintained, it does not appear as though the user is coming from doi.org or dx.doi.org instead of from the source). Nothing goes "through" that proxy server: it sends a redirect back to the original client with the current URL or other information relating to the handle resolution, and the final HTTP GET request comes from the user's client just as it otherwise would.
DOI names used through a HTTP proxy server (in the "https://doi.org" formulation as a URL) will continue to be persistent. As long as (1) the core DOI system is maintained, that is, as long as a given DOI name (10.123/456) can be resolved using the Handle System, and (2) as long as the proxy server named doi.org is kept running, and (3) as long as the core network services that enable the http-based web to function remain in place, then a DOI name (https://doi.org/10.123/456) referenced through that proxy will remain persistent. The key to understanding why this is so is modularity. The core DOI name resolution service is used by the proxy but is not constrained by the proxy. Additional gateways could be built and additional methods could be used to access the core DOI name resolution system without interfering in any way with the ongoing operation of the doi.org proxy.
Having created and advocated the use of the proxy, CNRI and IDF are committed to maintaining it in perpetuity, as it will be an essential component to maintaining the integrity of the millions of instances of DOI name-based web links. Maintaining the utility of those links over time will require maintaining both the core DOI system and the specific gateway service, doi.org, that those links reference and so use to gain access to the core DOI system. This, of course, is not at all unique and is just another variation on the Internet theme of layering services on top of one another. doi.org is itself dependent on the Domain Name System (DNS), which is itself dependent on IP addressing and routing, etc. This picture will probably grow more complex as time goes on (we hope it does), with the core DOI name resolution facilities used in multiple ways and by multiple services. OpenURL resolvers, for example, will find DOI names in their "raw" form, e.g., id=doi:10.123/456, and so could choose among using the doi.org proxy, or setting up their own web-to-DOI name proxy server(s), or using the handle protocol to query the DOI system directly.
The required functionality might also be delivered to a browser by means of a scripting feature, such as JavaScript. However, we do not encourage this for long range DOI system strategy, since scripting is unlikely to be assured of support by browsers in the medium to long term; for example, many security specialists are currently urging computer users to turn off JavaScript in their e-mail system preferences.
For relevant applications, note also that DOI is a registered URI within the info-URI namespace (IETF RFC 4452, the "info" URI Scheme for Information Assets with Identifiers in Public Namespaces). See also the factsheet "DOI System and Internet Identifier Specifications".
Users may resolve DOI names that are structured to use the DOI system Proxy Server (https://doi.org (current, preferred) or earlier syntax http://dx.doi.org). The proxy servers respond to HTTPS (preferred) as well as HTTP requests. The resolution of the DOI name in this case depends on the use of URL syntax: the example DOI name doi:10.10.123/456 would be resolved from the address: "https://doi.org/10.123/456". Any standard browser encountering a DOI name in this form will be able to resolve it. The proxy service (both doi.org and dx.doi.org) is accessible over IPv6, and supports DNSSEC.
3.8.1. Resolving DOIs using the Proxy Server System
The DOI system uses the Handle System® to manage digital objects (see the DOI Factsheet "DOI System and the Handle System"). At the infrastructure level, DOI names are handles.
The DOI system Proxy Server is basically a web server that knows how to talk to the Handle System, and at this writing, most DOI® names found on the web are embedded in URLs that use the proxy server for DOI name resolution. For any HTTP request that combines the proxy's domain name with a DOI name, for example
https://doi.org/10.1000/demo_DOI
the proxy will query the Handle System for the DOI name, take the URL in the handle record (or if there are multiple URLs in the handle record it will select one, and that selection is in no particular order) and send an HTTP redirect to that URL to the user's web browser.
Increasing numbers of DOI names include data in addition to the single default URL. This is sometimes referenced as multiple resolution. These added values are intended for use by more advanced applications which have the ability to take advantage of multiple pieces of data, e.g., the location of enhanced metadata or related documents.
In addition to handle values of type URL, the proxy server understands values of handle value type 10320/loc. These values contain XML describing multiple redirection endpoints for the DOI name and conditions under which the proxy should use them. For further documentation see Section 3.8.4.3 Resolution of Multiple URLs using the 10320/loc Handle Type.
The proxy server is configured to display a "DOI Name Not Found" error page when queried for a DOI name that it cannot find.
The DOI names 10.1000/demo_DOI and 10.1000/demo_DOI/ are both valid DOI names, but it is unlikely that a DOI name will be created with a trailing slash. If a resolution request for a DOI name with a trailing slash is received by the proxy server and that DOI name is not found, the proxy server will return an error report that includes a warning that the requested DOI name contained a trailing slash, and a link to click to resolve the same string without the slash.
The DOI system Proxy Server is really multiple servers running at multiple locations, with the load distributed evenly across all servers. To speed resolution, the proxy servers cache handle values, with the TTL set to 24 hours. This means that if a handle value is changed, it can take up to 24 hours before the new value is returned.
Note that the IDF also runs a proxy server for the shortDOI Service that is not part of this DOI system Proxy Server specification.
3.8.2 Proxy Server query parameters
The DOI system Proxy Server REST API allows programmatic access to DOI name resolution using HTTP.
Example Request/Response
A REST API request can be made by performing a standard HTTP GET of
/api/handles/<handle>
The API returns JSON.
For example, https://doi.org/api/handles/10.1000/1 yields the response
{ "responseCode": 1, "handle": "10.1000/1", "values": [ { "index": 100, "type": "HS_ADMIN", "data": { "format": "admin", "value": { "handle": "0.NA/10.1000", "index": 200, "permissions": "011111111111" } }, "ttl": 86400, "timestamp": "2000-04-13T15:08:57Z" }, { "index": 1, "type": "URL", "data": { "format": "string", "value": "https://www.doi.org/index.html" }, "ttl": 86400, "timestamp": "2004-09-10T19:49:59Z" } ] }
Response Format
The response is a JSON object which includes a "responseCode" (an integer referring to a Handle protocol response code), an echo of the "handle" resolved, and either a list of "values" or, in the case of an error, an optional "message" which is a string describing the error.
Each value is a JSON object with generally 5 attributes:
Handle value data is an object with properties "format", a string, and "value".
Response Codes
Query Parameters
This DOI system Proxy Server REST API is CORS-compliant, however, JSONP callbacks are also supported using a "callback" query parameter.
The presence of the "pretty" query parameter instructs the server to pretty-print the JSON output.
The "auth" query parameter instructs the proxy server to bypass its cache and query a primary handle server directly for the newest handle data.
The "cert" query parameter instructs the proxy server to request an authenticated response from the source handle server. Not generally needed by end users.
The "type" and "index" query parameters allow the resolution response to be restricted to specific types and indexes of interest. Multiple "type" and "index" parameters are allowed and values are returned which match any of the specified types or indexes. For example,
For example, https://doi.org/api/handles/10.1000/1?type=URL&callback=processResponse yields the response
processResponse({ "responseCode": 1, "handle": "10.1000/1", "values": [ { "index": 1, "type": "URL", "data": { "format": "string", "value": "https://www.doi.org/index.html" }, "ttl": 86400, "timestamp": "2004-09-10T19:49:59Z" } ] });
3.8.4 Additional Functionality
3.8.4.1 Local Content Servers (The "Appropriate Copy" Problem)
The CookiePusher script runs on the DOI system website (http://www.doi.org). The proxy server (http://doi.org (preferred) or earlier syntax http://dx.doi.org (https is supported) is under the DOI.ORG® domain. The URL for the CookiePusher script is:
http://www.doi.org/cgi-bin/pushcookie.cgi
A sample request to the CookiePusher containing the URL prefix of the local content server is:
http://www.doi.org/cgi-bin/pushcookie.cgi?BASE-URL=http%3A//university.library.edu%3A9003/local_linking/
The request to add the cookie to the user's web browser's cookie file is usually hidden from view on an introductory or login web page, using a transparent GIF.
<img src="http://www.doi.org/cgi-bin/pushcookie.cgi?BASE-URL=
http%3A//university.library.edu%3A9003/local_content_server/">transparent.gif</img>
A sample cookie, with a TTL of 24 hours, is:
Name: Demo-OpenURL
Information: \"http://university.library.edu:9003/local_content_server"
Domain: .doi.org
Path: /
Server Secure: no
Expires: Wednesday, October 23, 2013 10:28:11 PM
After the cookie is set, the proxy server will recognize the local content server identified in the cookie, construct an OpenURL containing the local content server URL and the DOI name:
http://university.library.edu:9003/local_content_server/openurl?doi=10.1000/demo_DOI
If there is no local copy of the content, the local server must return the request to the proxy server with a "nols=y" flag set. The proxy server will then resolve the DOI name and direct the user to the publisher's content. (The deprecated setting "nosfx=y" used in the prototype is still supported.) Correctly setting the "no local service" flag is critical to avoiding infinite loops.
http://doi.org/openurl?id=doi:10.1000/demo_DOI&nols=y
The DOI system proxy server accepts a resolution request in the form of an OpenURL. For example:
https://doi.org/openurl?url_ver=z39.88-2003&rfr_id=ori:rid:crossref.org&rft_id= doi:10.1256/003590&rfr_dat=cr_setver%3d01%26cr_pub%3dSource%20Publisher%26cr_work%3dSource %20Journal%20Title%26cr_src%3dSRC-NAME
If the URL is in the opt-in list, the proxy server will construct a new URL as follows:
The Proxy will iterate over the known selection methods, in order, until a single location has been selected. After each iteration the Proxy will take one of four steps:
For references to DOI name 10.123/456, with a value type 10320/loc that has this list of location attributes:
<locations>
<location id="0" href="http://uk.example.com/" country="gb" weight="0" />
<location id="1" href="http://www1.example.com/" weight="1" />
<location id="2" href="http://www2.example.com/" weight="1" />
</locations>
A 10320/loc type containing the following information was added to the record, to be used by the Proxy for redirection:
<locations chooseby="locatt,country,weighted"> |
Previous Chapter: 2 Numbering Next Chapter: 4 Data Model
®, DOI®, DOI.ORG®, and shortDOI® are trademarks of the International DOI Foundation. |