5.4 DOI解決機能
このセクションでは、DOI®システムが提供する解決機能について説明します。これらの機能はDOIプロキシとDOI REST APIによりサポートされています。
5.4.1 DOIシングルレゾリューション
DOIシステムのシングルレゾリューションには、DOIレコードのURL値として格納された場所をリクエスタに返すという機能があります。リクエスタがHTTPSリクエストを行うと、DOIプロキシはそのリクエスタをこのURLにリダイレクトします(1.5.1 DOIプロキシを用いたウェブリソースへの直接リダイレクト参照)。プロセスは、以下のとおりです。
- ユーザーがDOI名解決リクエストをDOIリゾルバに送る。
- DOIリゾルバがDOI名解決リクエストをGHRに送る。GHRは、担当するDOI LHSにリゾルバをリダイレクトし、そのDOI LHSがDOIレコードをリゾルバに返す。
- DOIリゾルバはDOIレコード要素のリストの中で最初に見つけたURL要素を取得し、そのURLをリクエスタに返す。
5.4.2 DOIマルチプルレゾリューション
DOIマルチプルレゾリューションを使用すれば、任意の形式の複数のリソースをDOIレコードの中で管理できます。マルチプルレゾリューションは通常、同じ対象物の複数のURLを管理するため(1.6.1 複数のインスタンスを持つ対象物の管理参照)、あるいは様々な基準に従って異なるURLを選択するために使用されます。
DOIレコードの中で複数のリソースを管理するにあたっては、既定の10320/locタイプの要素が使用されます。この要素により、複雑なルールをRDF/XML形式にフォーマットした上で定めることが可能になります。DOIリゾルバはこの形式を解釈できるため、リソースを取得し、解決のリクエスタに返すことができます。例えば、リクエスト(要求)の文脈(特にリクエスタの国)に応じて、リソースが選択されることが考えられます。詳細については10.5 10320/loc要素を参照してください。
図16は、URLの検索に使われる10320/loc要素を含むDOIレコードを表しています。10320/loc要素はプレフィックスレベルで格納されることもあり、その場合は、それと同じプレフィックスのすべてのDOI名に適用されます。

DOIマルチプルレゾリューションのプロセスは以下のとおりです。
- リクエスタ(ユーザーまたはアプリケーションプロセス)がDOIリゾルバにHTTPリクエストを送る。
- DOIリゾルバがDOI名解決リクエストをGHRに送る。GHRは、担当するDOI LHSにリゾルバをリダイレクトし、そのDOI LHSがDOIレコードをリゾルバに返す。
- DOIリゾルバが10320/loc要素を認識する。HTTPリクエストの特性に応じて、DOIリゾルバがそのコードを解釈し、解釈結果(例えばURL)をリクエスタに返したり、生のXMLコードや、考えられるリソースのリスト(例えばURLのリスト)を返したりする。
10320/locタイプを理解できないDOIリゾルバ(DOIプロキシ以外)が存在する場合、これらリゾルバはこのリクエストを無視し、単にDOIシングルレゾリューションのリクエストを申請します。
5.4.3 パラメータパッシング
パラメータパッシング機能により、DOIプロキシに送られるDOI解決リクエストに、リクエストのコンテキスト(例えば、リクエストを行う特定のユーザー)に関する情報を含めることができるようになりました。リクエストで表されるコンテキストによって、解決結果が異なったものになる可能性もあります。コンテキストの変更は予測できるため、ハイパーリンクの原作成者が様々なコンテキストに合わせて異なるURLを手作業で作成する必要はありません。
パラメータパッシング機能には、次の2つのURLが関係します。
- 参照元のURL:リクエスタ(参照元)がDOIプロキシに送るURLで、解決すべきDOI名とコンテキスト情報を含む。
- 対象物のURL:各々のDOIレコードに登録されているURLで、パラメータを含むこともある。
DOIプロキシは参照元のURLと対象物のURLを組み合わせて、アウトバウンドリンクを作成します。アウトバウンドリンクは、以下の2つの方式をサポートしています。:
- urlappend: シンプルな方式(下記参照)
- OpenURL: 非推奨方式(付録参照)
urlappendでのパラメータパッシング
urlappendを用いると、以下のように、key-valueペアを参照元のURLに入れることで、アウトバウンドリンクに渡すことができます。
https://doi.org/<doi-name>?urlappend=%3F<key1>=<value1>%26<key2>=<value2>...
各key-valueペアの前には、疑問符(%3F)またはアンパサンド(%26)を入れなければなりません。
例:
参照元のURL「https://doi.org/10.1256/003590?urlap-pend=%3Fparam1=12345%26param2=6789」
と、対象物のURL「https://www.publisher.org/resource9876」と組み合わせて、アウトバウンドリンク「 https://www.publisher.org/re- source9876?param1=12345%26param2=6789」を作成します。
対象物URLに既にパラメータが含まれている場合は、urlappendの値と矛盾してしまう可能性があります。上の例では、urlappendは疑問符よりアンパサンド文字を最初にもってくる必要があります。
5.4.4 コンテンツネゴシエーション
コンテンツネゴシエーションとは、HTTPの一部として定義されたメカニズムを指します。同じURLでリソースの異なる表現を提供することを可能にすることで、コンテンツレンダリングソフトウェアは、自分の機能に最適なバージョンを指定できます。DOIシステムの文脈では、コンテンツネゴシエーションの使用により、特定の登録機関(RA)特有のコンテンツタイプを優先するリクエストが可能になる一方、他のRAの場合にはより一般的なコンテンツタイプで応答します。
DOIリゾルバに対するコンテンツネゴシエーション方式リクエストは、一般的なHTTPリクエストとよく似ていますが、クライアントが提供する許容コンテンツタイプのリストに基づいてサーバー主導型ネゴシエーションが行われる点が異なります。このリクエストを作るには、HTTPSヘッダ「Accept」を使用する必要があり、GETは、リクエストを行うクライアントプロセスにとって受け入れ可能な(クライアントにとって解析の仕方が分かる)コンテンツタイプを複数含み、また各コンテンツタイプに特定の優先レベル(品質係数)があります。
例えば、Crossref RAはコンテンツネゴシエーションを使って、コンテンツタイプが「text/html」でないすべてのリクエストを、要求(リクエスト)されたDOI名を管理するメタデータサービスにリダイレクトします。そのために、10320/locの値(これはコンテンツタイプ「applica-tion/rdf+xml」に対応)をDOIレコードの中で使用し、それぞれのメタデータサービスへのリダイレクトを指定します。DOIリゾルバは、このコンテンツタイプをサポートしていない場合、URL値(コンテンツタイプ「text/html」)で定義されたURLにリダイレクトします。以下のDOI名の例を図17に示します。
インデックス | タイプ | タイムスタンプ | データ |
---|---|---|---|
1 | URL | Fri Apr 1 2022 13:32:18 EST | https://www.sciencemag.org/cgi/doi/10.1126/sci-ence.169.3946.635 |
1000 | 10320/loc | Mon Jun 27 2021 14:28:25 EDT | <locations chooseby="locatt,country,weighted">。 <location weight="0" http_role="conneg" href_tem-plate="https://data.crossref.org/10.1126/sci-ence.169.3946.635" /> </locations>。 |
図17コンテンツタイプがRDF XMLのDOIレコードの例
「applica-tion/citeproc+json」と「application/rdf+xml」の両方をリストするコンテンツネゴシエーション方式リクエストのAcceptヘッダと、メタデータサービスによって返されるメタデータを図18に示します。リクエストクライアントは、citeproc JSONが利用可能な場合は、citeproc JSONを受け取ることを望みますが、citeproc JSONが利用できない場合には、RDF XMLを処理できます。優先レベル(「q」係数)は、望ましい選択肢をリクエストで指定するために使用されます。

5.4.5 DOIシステムにおける解決エラーの処理
解決を試みて成功しなかった場合、エラーメッセージが表示されます。エラーメッセージは、登録機関から提供されるか、DOIシステムから一元的に提供されます。
DOIシステムによって提供されるエラーページは、DOI技術サポートサービスプロバイダーが管理するDOIヘルプアドレス()にユーザーを誘導します。
- Handleシステムに問題がある場合は、DOI技術サポートサービスプロバイダーが送信元に適切に対応します。
- DOI名が見つからない場合は、特別な処理が行われます(以下を参照)。
「DOI not found」/「DOI prefix not found」エラー
例えば、DOI名の解決リクエストの形式が正しくない場合や、DOI名が存在しない場合など、入力したDOI名やDOIプレフィックスが見つからないことがあります。その場合、以下の事項が記載された応答ページが表示されます。
- エラーの詳細
エラー応答システムは、さらにユーザーを支援するため、ユーザーがDOIプレフィックスのみを解決しようとしたか、あるいは、エラーの原因となる可能性のある複数のスラッシュまたは末尾のスラッシュを含むDOIを解決しようとしたかをチェックし、その結果に応じてユーザーに助言します。 - ユーザーが担当RAにエラーレポートを送れること
RAから求められれば、技術サポートサービスプロバイダーは、エラーメッセージを担当RAに自動的に送信するようDOI プロキシを設定できます。