Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
この文書は、インターネットクライアントが、コンテンツの適合先である データ プロファイルに基づいて、サーバーから提供されるコンテンツをネゴシエートする方法を説明する。これは、メディアタイプや言語によるネゴシエーションとは異なる。 プロファイルは、 返される情報の内容を指定でき、その情報は、応答するサーバーが要求されたリソースについて 持つ情報の一部である場合があり、実務コミュニティの相互運用性 要件を満たすために特定の方法で構造化される場合がある。
この節は、この 文書の公開時点におけるステータスを説明する。現在のW3C 公開物の一覧と、この技術レポートの最新版は、 W3C標準と草案の 索引で確認できる。
この文書は、Dataset Exchange Working Groupにより、 勧告 トラックを用いる 作業草案として公開された。
作業草案としての公開は、 W3Cおよびそのメンバーによる承認を意味しない。
これは草案文書であり、いつでも他の文書により更新、置換、または廃止される可能性がある。 この文書を、進行中の作業以外のものとして引用することは適切ではない。
この文書は、 W3C 特許 ポリシーのもとで活動する グループにより作成された。 W3Cは、 グループの成果物に関連して行われた 特許開示の公開一覧 を維持している。そのページには、 特許を開示するための手順も含まれている。個人が実際に 認識している特許について、その特許が 必須請求項 を含むと信じる場合、その個人は W3C特許ポリシー第6節 に従ってその情報を開示しなければならない。
この文書は、 2025年8月18日のW3Cプロセス文書 に準拠する。
この文書は、W3C Dataset Exchange Working Group (DXWG) およびInternet Engineering Taskforce (IETF)により編集された、プロファイルに関する一連の文書の1つである。 DXWG文書は次のとおりである。
次の文書は、IETFの管理のもとで維持されており、この文書の技術的 基盤を確立するが、DXWGの範囲には含まれない。
この節は非規範的である。
インターネット識別子を逆参照することによって配信されるコンテンツは、さまざまな 方法でネゴシエーションの対象になり得る。 HTTPプロトコル [RFC9110] を使用する場合、クライアントは1つ以上のリクエストヘッダーを設定できる。
Acceptヘッダー
Accept-EncodingヘッダーAccept-Languageヘッダーしかし、クライアントには、情報モデル、すなわち標準、仕様、または プロファイルへの 準拠に基づいてコンテンツをネゴシエートするための 定義された方法がなかった。 この文書は、そのような機能をどのように提供できるかを説明する。
リソースに関するオンライン情報が1つ以上のプロファイルに準拠する場合、ここで説明する方法により、 クライアントはそれらのプロファイルの一覧を要求し、優先順位に従って1つ以上のプロファイルに基づく コンテンツを要求できる。
たとえば、カタログは、データセットの記述について、 異なる情報モデル、おそらく [VOID]、 [VOCAB-DATA-CUBE] および [VOCAB-DCAT] に準拠する 表現の選択肢を提供する場合がある。さらに、[VOCAB-DCAT] 表現は、 [DCAT-AP] プロファイル、 [GeoDCAT-AP] プロファイル、そして場合によっては組織固有のプロファイル「MyOrgDCATProfile」にも準拠しているかもしれない。 これらのより狭いプロファイルは、それらがプロファイルとして参照する、より一般的な仕様を超えて、 データセットの記述のさまざまな要素をさらに制約する。 このデータセットの記述について利用可能な表現に関する情報のリクエストは、 そのデータセットで利用可能なプロファイルの一覧を求めることもでき、 また、たとえば [GeoDCAT-AP] など、 特定の1つのプロファイルに準拠する表現を明示的に求めることもできる。 プロファイルが要求されない場合、またはサポートされていないプロファイルが要求された場合、サーバーは、 サーバーがサポートする既定プロファイルに準拠する既定コンテンツを返す。
コンテンツネゴシエーション機構を選択する際、インターネットクライアントはHTTPプロトコルを使用してもよいが、 サーバーに指示を提供する他の方法を使用してもよい。 潜在的な機構の1つは、URLクエリ文字列 引数 (QSA) である。QSAは、 Webブラウザーにリクエストを手動入力する場合など、HTTPによるネゴシエーションが実用的でない状況において、 人間と機械の双方にとって有用である。この仕様は、プロファイルによるコンテンツネゴシエーションの抽象モデルを提供し、 その抽象モデルに準拠する2つの具体的な方法、HTTPおよびQSAの 使用に関する指針を示す。
HTTPヘッダーおよびURL QSAの方法は、抽象モデルの 機能プロファイルとして定義される。 この仕様はこれら2つの機能プロファイルのみを説明するが、実装者は、 将来実現される可能性のある環境を含む他の環境のために、 抽象モデルの機能プロファイルを実装したいと考えることが予想される。
実装者は、自ら定義するあらゆる機能プロファイルが、 抽象モデルの機能を実装し、代替表現データモデルに従って 代替表現情報を提供できることを保証する必要がある。
リソース表現がどのようにプロファイルに準拠するか、およびプロファイルと仕様が相互に どのように関係するかを記述することは、この仕様の一部ではない。 これらの問題の一部は、同じくDXWGにより作成されたProfiles Vocabulary [DX-PROF] で扱われている。
非規範的と明示された節に加えて、この仕様内のすべての作成ガイドライン、図、例、および注記は非規範的である。 この仕様におけるそれ以外のすべては規範的である。
この文書におけるキーワード MAY、MUST、MUST NOT、RECOMMENDED、SHOULD、およびSHOULD NOTは、 ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] に記述されているとおりに解釈される。
適合性の目的において、この文書の規範的な節は、 3. 定義、 7. 抽象モデル、 8. 機能プロファイルおよび 10. テストスイートである。 付録は非規範的である。
リソース表現のコンテンツが準拠し得る仕様およびプロファイルは、 それぞれ独自の適合性概念を具現化しており、それらはこの仕様の範囲外である。
比較のための基礎。他のものを評価できる基準点。
特定の文脈で使用されるデータの内容と構造を定義する、 人間および/または機械で処理可能な表現を持つ 仕様。
出典: DXWGの審議。
特定の文脈におけるアプリケーションの振る舞いを定義する、 人間および/または機械で処理可能な表現を持つ 仕様。
出典: DXWGの審議。
他の仕様の使用について制約、拡張、結合、または指針や説明を提供する 仕様。
プロファイル化される仕様が、たとえばデータ仕様や機能 仕様のような特殊な種類の仕様である場合、そのプロファイルも同じ種類、 すなわちデータプロファイルまたは機能プロファイルになる。
このプロファイルによるコンテンツネゴシエーション仕様は、 データプロファイルのためのネゴシエーションを扱い、 これを実現するさまざまな方法について機能プロファイルを指定する。 この文書では、「profile」という用語のほとんどの出現は「data profile」を指す。
他のデータ仕様の使用について制約、拡張、結合、または指針や説明を提供する データ仕様。
この定義には、「アプリケーションプロファイル」、「メタデータプロファイル」または 「メタデータアプリケーションプロファイル」と呼ばれることがあるものが含まれる。
出典: DXWGの審議。
他の機能仕様の使用について制約、 拡張、結合、または指針や説明を提供する 機能仕様。
出典: DXWGの審議。
HTTP通信における、あるものの現在または望ましい状態の抽象化。[RFC9110]
この仕様では、表現はリソースのものである。
この仕様で使用される名前空間と接頭辞の完全な集合を次の表に示す。
| 接頭辞 | 名前空間 |
|---|---|
| altr | http://www.w3.org/ns/dx/connegp/altr# |
| dcat | http://www.w3.org/ns/dcat# |
| dcterms | http://purl.org/dc/terms/ |
| ex | http://example.com/ |
| owl | http://www.w3.org/2002/07/owl# |
| prof | http://www.w3.org/ns/dx/prof/ |
| rdfs | http://www.w3.org/2000/01/rdf-schema# |
| sdo | https://schema.org/ |
| skos | http://www.w3.org/2004/02/skos/core# |
| xsd | http://www.w3.org/2001/XMLSchema# |
この節は非規範的である。
多くの場合、単一のメディアタイプの範囲内でリソースを記述する方法は複数存在する。
たとえば、XML文書は、application/xmlメディアタイプに準拠しつつ、
複数のDTDまたはXMLスキーマのうちの1つに従う場合がある。
RDF文書は、text/turtle、application/rdf+xmlなどの
メディアタイプ直列化の選択肢を持ち、そのコンテンツの情報モデルに使用できる多数の語彙
(クラスおよびプロパティ) を持つ。クライアントが、リソースの表現を取得するHTTP GETなど、
インターネットリソースへのリクエストを開始するとき、クライアントとサーバーは、
送信されるリソースがDTD、XMLスキーマ、語彙、またはその他の標準、仕様、あるいは
プロファイルに従って
どのように構造化されるかについての情報を交換するための標準化された方法を持つ必要がある。
非HTTPコンテンツネゴシエーションを使用する場合、クエリ文字列
引数を持つURIなどの方法は、以前から実装されている。
たとえば、
OAI-PMH [OAI-PMH] および
OGCの
CSW [CSW] プロトコルなどである。
この文書は、プロファイルによるコンテンツネゴシエーションのための、関数ベースの抽象的な仕様を説明し、 その仕様を異なる環境で実装するために、HTTPヘッダー機能プロファイルと、 クエリ文字列引数に基づく2つの機能プロファイルを示す。 クエリ文字列 アプローチは、Dataset Exchange Working Groupの憲章 (第2.3節) によって要求される「フォールバック」(抽象仕様の2つ目の非HTTP実装) を提供するとともに、 潜在的な機能プロファイル実装者が実装の指針として利用できる 抽象仕様の機能プロファイルを示すものでもある。
この抽象仕様の他のクエリ文字列ベースまたはRESTベースの機能プロファイルも 可能であると考えられるが、ここでは指定しない。一般に、 リソース表現の代替 プロファイルの一覧表示およびプロファイルに基づくリソース表現の取得をサポートする既存のAPIも、 この文書の機能プロファイルと同様に、その必要な機能を実装することで、 この仕様への適合をサポートし、実証することができる。
この節は、特定の環境での実装には依存しない、プロファイルによるコンテンツネゴシエーションの概念的な ― 抽象的な ― モデルを説明する。
異なる環境向けのこの抽象モデルの実装は、 機能プロファイルと呼ばれる。 有効な機能プロファイルであるためには、それらはこれらの抽象モデル 関数を実装MUSTである。 これをどのように行うかは環境固有である。
機能プロファイルは、独自の追加機能によってこの抽象モデルを拡張MAYであるが、 これらの追加はここで定義される関数を無効にしてMUST NOTである。
異なるデータプロファイルに準拠するリソースの表現を記述するためのデータモデルを ここに示し、 このモデルはすべての機能プロファイルで使用MUSTである。データモデルをどのように 実現するかは実装者の判断に委ねられる。実装されたデータモデルの適合性をどのように実証するかは、 ここでは詳細には扱わず、次の 指針のみを示す。実装者は、モデルの環境固有の実現と、 この仕様で与えられるモデルの具体的な実現、たとえばそのOWL オントロジー表現との間の公開されたマッピングを提供することにより、自らの代替 表現データモデル 実装の適合性を実証SHOULDである。
インターネット上のすべてのコンテンツネゴシエーションは、クライアントとサーバー の間で行われ、前者が リクエスト を通じてリソースの表現、またはリソースのメタデータを要求し、 要求された表現をレスポンスを通じて受け取る。 通信している任意の機械のペアについて、 情報が相互に要求されるにつれて、クライアントとサーバーの役割は反転し得る。
インターネットリソースには、クライアント/サーバーのエージェントのペアが コンテンツについてネゴシエートし得る多くの側面がある。これらの側面は独立して扱われるため、 プロファイルによるネゴシエーションと他の任意の側面によるネゴシエーションを含むリソースの コンテンツネゴシエーションは相互に影響しない。
この抽象モデルでは、クライアント、サーバー、 リソース、メタデータ、リクエスト、またはレスポンスについて、定義節3. 定義でそれらの用語にすでに 提供されている詳細以外の、特定の詳細は仮定しない。
データプロファイルに準拠するリソースの表現を 要求するクライアントは、 リソースをUniform Resource Identifier (URI) [RFC3986] によって識別MUSTであり、 プロファイルをURIまたはトークンのいずれかによって識別MUSTである。
プロファイル識別にURIが使用される場合、それはプロファイルの記述へ逆参照されるHTTP URIである べきである。 他の種類のURI、たとえばURNも使用MAYであり、これらは逆参照可能でない場合がある。 トークンが使用される場合、それはリクエスト/レスポンスのメッセージペア内で データプロファイルを明確に識別MUSTである。 サーバーは、トークンをURIにマッピングできる文脈を宣言MUSTである。
プロファイルによるコンテンツネゴシエーションに関して、クライアントがサーバーに対して行い得る リクエストには、主に2つの型がある。この 仕様に従うプロファイルを通じてコンテンツをネゴシエートしたいクライアントは、これら2つのリクエスト型を実装できMUSTである。
この仕様に従うサーバーは、 各リクエストに対して、それぞれ次の レスポンスで応答MUSTである。
これらのリクエストとそのレスポンスのより詳細な説明を次に示す。
クライアントは、サーバーがリソースの準拠する表現を配信できる データプロファイルを知りたい。 プロファイル一覧は、特定のリソース表現に対するリクエストが行われる前に既知である場合もあれば、 初期リクエストが 行われた後にのみ既知になる場合もある。
プロファイル一覧リクエストは、独立したリクエストであるか、別の 機能プロファイルのリクエストの一部でMUSTある。
プロファイル一覧リクエストは、リソースの表現が準拠する データプロファイルがURIまたはトークンのいずれかによって 明確に識別されるなら、いくつかの形式のうちの1つによるレスポンスをもたらしMAYである。 後者の場合、それは1つの特定のクライアント/サーバーメッセージペア内でURIに マッピング可能でMUSTある。
サーバーは、そのデータプロファイルを指定する プロファイルによるリソース取得リクエストが提示されたときに配信できない データプロファイルを一覧に含めてMUST NOTである。
例 4は、 リクエストが特定のリソースに対するプロファイル一覧リクエストである場合の、 QSA機能プロファイルに準拠する メッセージのリクエスト/レスポンスペアを示す。
# resource aの表現が準拠するすべてのプロファイルに対するリクエスト
GET /resource/a?_profile=alt HTTP/1.1
---
# サーバーはHTTPレスポンスヘッダーとレスポンス本文 (HTML) の両方で
# プロファイル一覧を返す。レスポンスメッセージを返す動作は
# QSA機能プロファイルに準拠しており、これは「profile」関係と組み合わせた
# Linkヘッダーによって示されることに注意。
HTTP/1.1 200 OK
Content-Type: text/html
Link: <http://www.w3.org/ns/dx/connegp/profile/qsa>; rel="profile"
# このLinkヘッダーは、Profile XおよびYに準拠する表現が利用可能であり、
# Profile X準拠の表現がHTMLおよびXMLメディアタイプで利用可能であることを示す。
Link:
<http://example.org/resource/a?_profile=profile-x&_mediatype=text/html>;
rel="canonical"; type="text/html";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?_profile=profile-x&_mediatype=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?_profile=profile-y&_mediatype=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/y"
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Resource Aのプロファイル</title>
</head>
<body>
<h1>Resource Xで利用可能なプロファイル</h1>
<ul>
<li><a href="?_profile=profile-x&_mediatype=text/html">X、HTML形式</a></li>
<li><a href="?_profile=profile-x&_mediatype=application/xml">X、XML形式</a></li>
<li><a href="?_profile=profile-y&_mediatype=application/xml">Y、XML形式</a></li>
</ul>
</body>
</html>
プロファイルによるコンテンツネゴシエーションの最も基本的なリクエストは、クライアントがデータプロファイルに準拠すると主張される リソースの表現を要求することである。
プロファイルによるリソース取得リクエストを実行するクライアントは、 データプロファイルをURI、またはセッション内でURIに明確にマッピングされるトークンのいずれかによって 識別MUSTである。
プロファイルによるリソース取得を実行するクライアントは、 機能プロファイル固有の順序で表現された選好により、任意の数の データプロファイルのうちの1つに準拠する リソース表現を要求MAYである。
サーバーは、クライアントリクエストに最もよく一致するプロファイルで応答するよう試みるSHOULDである。 最もよく一致するプロファイルを決定するためにサーバーが従うMUST優先順位は、 完全一致、その次にリソース表現が準拠する次に最も具体的なプロファイルである。 リソース表現は、階層を通じて (すなわち推移的に) より一般的な仕様や他のプロファイルに 準拠する場合があることに注意。
[RFC9110] で指定されているように、プロファイル、メディアタイプ、またはその他のネゴシエーション次元における
選好を指定するリクエストでHEADメソッドが使用される場合、レスポンスは、
本文が空でMUSTである点を除き、ヘッダーおよびステータスコードを含めて
GETメソッドの場合と同じであるべきである。
レスポンスコンテンツの生成中にのみ値が決定されるヘッダーは、
省略MAYであることに注意することが重要である。
サーバーが別のリソースへリダイレクトする場合、クライアントにより要求された一覧から選択された プロファイルの選択を示しMUST、リダイレクトリクエスト (303レスポンス) において返されることが期待される 具体的なより狭いプロファイルを (既知であれば) 示すSHOULDである。
HTTPヘッダー機能プロファイルに従って、
Accept-Profileおよび
Link: rel="profile"
ヘッダーを含む単純なリクエスト/レスポンスメッセージペアを
例 5に示し、リダイレクトを伴う例を
例 6に示す。
例 7は、
要求されたプロファイルよりも狭いプロファイルのレスポンスを示すHTTP
ヘッダー機能プロファイルのメッセージペアを示す。
# Profile xに従ったresource aへのリクエストが行われる GET /resource/a HTTP/1.1 Accept-Profile: <http://example.org/profile/x> --- # サーバーはProfile xに準拠するResource aの表現を返す HTTP/1.1 200 OK Link: <http://example.org/profile/x>; rel="profile" [レスポンス本文]
# Profile xに従った非情報リソースaへのリクエストが行われる GET /resource/a HTTP/1.1 Accept-Profile: <http://example.org/profile/x> --- # サーバーは、要求されたリソース表現を返す情報リソースを識別する # 別のURIへの303 Redirectを返す。リダイレクトする # サーバーは、リダイレクト先リソース表現が準拠するプロファイルを示す HTTP/1.1 303 See Other Location: http://example.org/info-resource/b Link: <http://example.org/profile/x>; rel="profile" --- # クライアントは今度は示された情報リソースを要求する。 # 元のレスポンスがリダイレクトレスポンスでそれを処理しているため、 # Accept-Profileヘッダーはもはや不要であることに注意 GET /info-resource/b HTTP/1.1 --- # 情報リソースを伴う最終的なサーバーレスポンス。この # レスポンスにはプロファイルを示すLink rel="profile"ヘッダーが含まれないことに注意 HTTP/1.1 200 OK [レスポンス本文]
# Profile Xに準拠する表現を持つResource Aへの
# リクエストが行われる
GET /resource/a HTTP/1.1
Accept-Profile: <http://example.org/profile/x>
[その他のリクエストヘッダー]
---
# サーバーは、Profile Xのプロファイルであることを知っている
# Profile Yに従って、Resource aの表現で応答できる
# サーバーは、リソース表現が準拠することを知っている
# プロファイルの一覧で応答し、要求されたプロファイルであるProfile Xが
# 一覧に含まれることを保証する。ここではProfile Yと、
# クライアントには無関係な追加プロファイルであるProfile Zが示される。
HTTP/1.1 200 OK
[その他のレスポンスヘッダー]
Link: <http://example.org/profile/x>; rel="profile", \
<http://example.org/profile/y>; rel="profile", \
<http://example.org/profile/z>; rel="profile"
[その他のレスポンスヘッダー]
[Profile X、YおよびZに準拠するコンテンツ]
同じプロファイル階層内にない2つ以上のプロファイルに準拠するリソースが返される場合 (すなわち、リソースはプロファイル集合に準拠するが、そのうちの一部は独立しており、 集合内の他のプロファイルの特殊化されたプロファイルではない場合)、サーバーは各独立プロファイルへの 準拠を示すSHOULDである。
たとえば、HTTPヘッダー機能プロファイルを使用する場合、 [GeoDCAT-AP] と [STATDCAT-AP] の両方に準拠するサーバーからのレスポンスについて、 いずれのプロファイルも他方をプロファイル化しておらず、したがって単一の準拠表示だけでは両方に十分ではないことを前提とすると (なお、両者は [DCAT-AP] をプロファイル化している。 [DX-PROF] のDCAT-AP階層 例を参照)、[GeoDCAT-AP] および [STATDCAT-AP] のプロファイルURIを使用するレスポンスは、次のようになり得る。
Link: <https://joinup.ec.europa.eu/release/geodcat-ap-v10>; rel="profile", <https://joinup.ec.europa.eu/release/statdcat-ap/101>; rel="profile"
このデータモデルは、異なるプロファイルに準拠するリソースの表現を記述するために使用MUSTである。
このモデルの図による概要を、図 1に示す。
異なるプロファイルに準拠するリソースの代替表現の記述は、このモデルを実装する モデリングシステムに従って提示MAYであり、 これは、この仕様が作成されたアプリケーションプロファイルに関連すると見なされるものに依存する。たとえば、 HTTPアプリケーションプロファイル (8.2 Hypertext Transfer Protocolヘッダー) は、[RFC9110] におけるHTTP仕様のヘッダー構造の制約内の テキストに制限されるため、その環境におけるこのデータモデルの構文的通信は、 その制約に従って実装されなければならない。
このデータモデルのいくつかの実装に対するデータインスタンスの適合性をテストするためのツールは、 10. テストスイートに示す。 予期される状況で使用するための、このデータモデルの具体的な実装および拡張に関する提案は、 A.4 代替表現データモデル - 詳細に示す。 推奨される使用例もその付録に示す。
サービスは、HTTP、QSA、および場合によってはその他のアプローチを含む、複数の機能 プロファイルを実装MAYである。 そのような場合、クライアントは、たとえば既定のヘッダーを送信しつつ特定の表現を要求するという一般的な場合のように、 異なる機構を通じて競合する選択を指定することがある。 ここで定義される優先順位は、どの機構を使用MUSTであるかを決定する。
優先順位は、HTTPよりもQSAを優先する。 これは、URIがより正確にリソースを指すほど、 そのリクエストでどのHTTPヘッダーが送信されるかにかかわらず、 エージェントがその正確なリソースを要求する意図を持つ可能性が高いという根拠に基づく。
抽象モデルの他の潜在的に競合する機能プロファイルが定義される場合、 優先順位を確立する必要がある。 これをどのように宣言するかについて、特定の機構は提案されていない。
この節は、異なるシステム環境向けに、この 仕様の抽象モデルの 機能プロファイルを定義する。その他のプロファイルも定義され得る。 抽象モデルに準拠する任意のプロファイルへの適合は、この仕様への適合を満たす。
この仕様は、HTTPヘッダーおよび人間のブラウザー(URLクエリ文字列 引数)という2つの環境向けに、抽象モデルの機能プロファイルを提供する。
さらに、Resource Representation Description
(cnpr:rrd) Profileは、
GetResourceリクエストに対するサーバーレスポンスがどのプロファイルに準拠するかを
サーバーが示すことを宣言するために使用できる。
人間のブラウザー環境については、異なる使用モードを示すために2つの機能プロファイルを提示する。 この仕様のさらなる機能プロファイルは、他の環境向け、またはこれらの環境内の 制約されたシナリオ向けに実装MAYであり、実装者はこの 仕様に準拠する追加のプロファイルを作成することが推奨される。
ここで事前定義されるこの仕様の機能プロファイルは、図 2に一覧表示される。 それらの名前空間接頭辞は次のとおりである。
cnpr → http://www.w3.org/ns/dx/connegp/profile/| URI | 名前 | 説明 | 使用上の注意 |
|---|---|---|---|
cnpr:http |
HTTPヘッダー機能プロファイル | 8.2 Hypertext Transfer Protocol ヘッダーで提示される機能プロファイルへの適合のため。 | リソースがHTTPヘッダー機能プロファイルに準拠する場合に使用する |
cnpr:qsa |
QSA機能プロファイル | 8.3 URLクエリ文字列引数で提示される機能プロファイルへの適合のため。 |
8.3 URLクエリ文字列
引数の推奨に従い、クエリ文字列
引数_profileおよび_mediatypeを使用するURL QSA機能プロファイルにリソースが準拠する場合に使用する。
|
cnpr:qsa-alt |
QSA代替キーワード機能プロファイル | 8.3 URLクエリ文字列引数で提示される機能プロファイルへの適合のため。 |
リソースがURL QSA機能プロファイルに準拠するが、
8.3
URLクエリ文字列引数の推奨によって許可されるように、
クエリ文字列引数_profileおよび
_mediatypeに代替キーワードを使用する場合に使用する。
|
cnpr:rrd |
リソース表現記述 | 7.3.2 プロファイルによるリソース取得への適合のため。 | 7.3.2 プロファイルによる リソース取得における抽象仕様に従い、リソース表現がどのプロファイルに準拠するかを 示せる場合に使用する。 |
上記の機能プロファイルに使用される名前空間
http://www.w3.org/ns/dx/connegp/profile/は、Dataset Exchange Working Groupの
予約済みW3C名前空間
http://www.w3.org/ns/dx/の一部であり、そのWorking Groupが扱う課題に関する
すべての名前空間要件のために用意されている。/profile/パスセグメントは、
現在図
2の上記4つのインスタンスのみを含むプロファイルオブジェクトの登録簿を示す。
Hypertext Transfer Protocol (HTTP)ヘッダーを使用する抽象モデルの機能プロファイルをここに提示する。
この実装はHTTPコンテンツネゴシエーションに基づき、特定の方法で構成された
Linkヘッダーと、今後の
Internet-Draft [PROF-IETF]で定義される予定の新しいHTTPヘッダー
Accept-Profileを使用する。
POSTおよびPUTメソッドは、この機能プロファイルの範囲外と考えられる。 これらのHTTPメソッドが、提案された抽象モデルのどの関数を実装するのかは明確ではない。
リクエストメッセージのコンテンツの適合性を伝達するために、rel="profile"を持つ
LinkヘッダーをPOSTおよびPUT
リクエストで指定してもよい。
サーバーは適切と考える方法で自由にネゴシエーションを実装できるが、
User AgentがAccept-Profileヘッダーを送信する場合、
サーバーは、列挙されたどのプロファイルにも準拠しない表現を、
クライアントが解釈できないものと見なすSHOULDである。
これは、列挙されたプロファイルに準拠するが、
他の次元で低い選好スコアを持つ表現は、
他の次元でより高い選好スコアを持つが列挙されたどのプロファイルにも準拠しない
表現よりも望ましいものと見なすSHOULDであることを意味する。
Accept-Profileヘッダーによる選好が与えられない場合、
プロファイル次元はネゴシエーション目的では無視するSHOULDである。
それにもかかわらず、すべての場合において、
サーバーのレスポンスは、表現が準拠するとサーバーが知っているすべてのプロファイルのURIを列挙する
rel="profile"を持つLinkヘッダーを
含むSHOULDである。
特定のリソースについてサーバーがサポートするプロファイル一覧を取得する好ましい方法は、
そのリソースに対してGETまたはHEADリクエストを発行することである。
どちらの場合でも、プロファイルによるコンテンツネゴシエーションを実装するサーバーは、
そのリソースの既定表現および任意の代替表現に関する情報を、それらが準拠するプロファイルを含めて含む
HTTP Linkヘッダーを返すSHOULDである。
既定表現、すなわち特定の表現が要求されない場合に返されるものは、
rel="canonical"によって識別し、その他の表現は
rel="alternate"によって識別するSHOULDである。
例として、メディアタイプapplication/xml、text/htmlおよび
text/turtleで利用可能なリソースhttp://example.org/resource/aを考える。
text/html表現にはプロファイルがないが、
application/xmlおよびtext/turtle表現は、
いずれもプロファイルurn:example:profile:xおよび
urn:example:profile:yで利用可能である。
Accept-Profileヘッダーを伴わないリクエストが既定で
urn:example:profile:xに準拠するコンテンツを配信すると仮定すると、
HTTPリクエスト/レスポンスペアは例 8のようになる。
HEAD /resource/a HTTP/1.1
Accept: text/turtle
[その他のリクエストヘッダー]
---
HTTP/1.1 200 OK
Content-Type: text/turtle
# このLinkヘッダーは、このレスポンスがどのプロファイルに準拠するかを示す
Link: <urn:example:profile:x>; rel="profile"
# このLinkヘッダーは、利用可能なすべてのプロファイルを一覧表示する
Link:
<http://example.org/resource/a>;
rel="canonical";
type="text/turtle";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="text/turtle";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="text/html"
[その他のレスポンスヘッダー]
例 8では、異なる
メディアタイプ/プロファイルの組み合わせごとに、
リソースのURIは変更されず、返されるレスポンスを変更するのは、
それぞれメディアタイプおよびプロファイルのためのAcceptおよびAccept-Profile
ヘッダーである。
サーバーは、メディアタイプ/プロファイルの組み合わせに従ったリソースの表現への直接リンクを示すために、
Content-Location HTTPヘッダーを使用MAYであり、
その場合は、Linkヘッダー内の変更されないURIを、例に従ってそれらの直接URIに置き換えてもよい。
HEAD /resource/a HTTP/1.1
Accept: text/turtle
[その他のリクエストヘッダー]
---
HTTP/1.1 200 OK
Content-Type: text/turtle
Content-Location: http://example.org/resource/a.prof1.ttl
Link: <urn:example:profile:x>; rel="profile"
Link:
<http://example.org/resource/a.prof1.ttl>;
rel="canonical";
type="text/turtle";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="text/turtle";
formats="urn:example:profile:y",
<http://example.org/resource/a.prof1.xml>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="text/html"
[その他のレスポンスヘッダー]
[Linkヘッダーでは、Content-Location URIはprofile urn:example:profile:xに
準拠するリソースのコンテキストURIとしてのみ使用される]
機能プロファイル実装は、抽象モデルの関数を実装することに加えて、
代替表現データモデルに従って代替表現情報を提供できることを保証する必要がある。
このHTTPヘッダー機能プロファイルでは、これを行うために選択された仕組みは、
以下に説明するように、[RFC8288]由来の
Linkヘッダーである。
HTTP Linkは、[RFC8288]によれば、
「2つのリソース間の型付き接続であり、次から構成される」。
リンクコンテキストは、Linkヘッダーが配信される対象のリソースである。
関係型はrel属性キー名で与えられ、リンクターゲットはURIであり、その他の任意の
ターゲット属性には、profile属性キー名で与えられるprofileが含まれ得る。
例 9では、
リンクコンテキストresource/aへのリクエストに対して返されるLinkヘッダーの最初の部分は、
次の部分を持つ。
<http://example.org/resource/a.prof1.ttl>rel="canonical"type="text/turtle"および
formats="urn:example:profile:x"
これらのLink HTTPヘッダー部分を使用することで、このHTTPヘッダー機能プロファイルは、
代替プロファイルデータ
モデルに従ってリソースの代替データプロファイルを伝達できる。
そして下記の図
3は、ヘッダー部分をデータモデルのOWLオントロジー表現へ対応付ける。
これは、その具体的かつ形式的な実現である。この対応付けは、7.
抽象モデルの指示、
すなわち「実装者は、モデルの環境固有の実現と、この仕様で与えられるモデルの具体的な実現、
たとえばそのOWLオントロジー表現との間の公開されたマッピングを提供することにより、
自らの代替表現データモデル実装の適合性を実証SHOULDである」に従って提示される。
| 代替表現データモデル要素 | Linkヘッダー要素 |
|---|---|
rdfs:Resource |
リンクコンテキストURIはrdfs:Resourceのインスタンスを示す |
altr:Representation |
リンクターゲットURIはaltr:Representationのインスタンスを示す |
dcterms:Standard |
profileのターゲット属性は、存在する場合、dcterms:Standardの
インスタンスのURIを示す |
dcterms:conformsTo |
リンクターゲットURIとターゲット
属性profileURIとの暗黙の関係 |
altr:hasRepresentation |
alternateの関係型が与えられる場合の、
リンクコンテキストURIとリンク
ターゲットURIとの暗黙の関係
|
altr:hasDefaultRepresentation |
canonicalの関係型が与えられる場合の、
リンクコンテキストURIとリンク
ターゲットURIとの暗黙の関係
|
Linkヘッダー内の要素と、
そのOWLオントロジー表現で識別される
代替プロファイルデータモデル内の要素との対応付け。
# 前の例のLinkヘッダーのうち1つを変更し、altr:Representationクラスインスタンスについて
# 空白ノードと絶対URIの違いを示す
# (<http://example.org/resource/a>; → <http://example.org/resource/different>;)
Link:
<http://example.org/resource/a>;
rel="canonical";
type="text/turtle";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="text/turtle";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:x",
<http://example.org/resource/different>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="text/html"
# 上記のLinkヘッダーをOWLオントロジーとして
# 代替プロファイルデータモデルで表現したもの
<http://example.org/resource/a>
altr:hasDefaultRepresentation [
dcterms:format "text/turtle" ;
dcterms:conformsTo <urn:example:profile:x> ;
] ;
altr:hasRepresentation [
dcterms:format "text/turtle" ;
dcterms:conformsTo <urn:example:profile:y> ;
] ,
[
dcterms:format "application/xml" ;
dcterms:conformsTo <urn:example:profile:x> ;
] ,
<http://example.org/resource/different> ,
[
dcterms:format "text/html" ;
]
.
<http://example.org/resource/different>
dcterms:format "application/xml" ;
dcterms:conformsTo <urn:example:profile:y> .
HTTPサーバーが、URIによるプロファイルの必須識別に加えて、
クライアントがトークンを介して
プロファイルを識別できるようにしたい場合、
サーバーは、サポートされる各トークンについて、それがどのプロファイルURIに対応するかを
示すSHOULDである。
この仕様のHTTPヘッダー機能プロファイルを実装する場合、
サーバーはレスポンス内に、各profile URI/tokenペアについて
Linkヘッダー([RFC8288])を含めMUSTである。
各LinkヘッダーはLink Target
"http://www.w3.org/ns/dx/prof/Profile"を使用MUSTであり、
次のTarget Attributeを含めMUSTである。
| ターゲット属性 | ターゲット属性値 |
|---|---|
rel |
"type" |
token |
anchor属性内のプロファイルURIに対応付けられるトークン
|
anchor |
token属性内のトークンに対応付けられるプロファイルのプロファイルURI
|
トークン/URI対応付けを伝達するために使用されるLinkヘッダーの例を、
例 11に示す。
# "anchor"要素内のプロファイルURIは、トークン"igsn-r1"に結び付けられる # さらに、関係"type"は、anchorリソースが"dcterms:Standard"型であることを # 通知するために使用される Link: <http://www.w3.org/ns/dx/prof/Profile>; rel="type"; token="igsn-r1"; anchor=<http://schema.igsn.org/description/1.0>
サーバーは、トークン/URI対応付けと並んで、たとえば代替表現データモデルのコンテンツなど、
さらに多くの属性をLinkヘッダーに追加MAYである。
例
12は、複数の属性を持つLinkヘッダーのトークンを示す。
# URI urn:example:profile:marc21-dnbを持つProfileはトークン"dnb"に対応付けられ、 # URI http://example.org/profiles/marc21-locを持つProfileはトークン"loc"に対応付けられる HEAD /resource/a HTTP/1.1 Accept: text/turtle [その他のリクエストヘッダー] --- HTTP/1.1 200 OK Content-Type: text/turtle Content-Location: http://example.org/resource/a.profx.ttl Link: <urn:example:profile:x>; rel="profile" Link: <http://www.w3.org/ns/dx/prof/Profile>; rel="type"; token="dnb"; anchor=<urn:example:profile:marc21-dnb>, <http://www.w3.org/ns/dx/prof/Profile>; rel="type"; token="loc"; anchor=<http://example.org/profiles/marc21-loc>, <http://example.org/resource/a.profdnb.ttl>; rel="canonical"; type="text/turtle"; formats="urn:example:profile:marc21-dnb", <http://example.org/resource/a.profloc.ttl>; rel="alternate"; type="text/turtle"; formats="http://example.org/profiles/marc21-loc", <http://example.org/resource/a.profdnb.xml>; rel="alternate"; type="application/xml"; formats="urn:example:profile:marc21-dnb", <http://example.org/resource/a.profloc.xml>; rel="alternate"; type="application/xml"; formats="http://example.org/profiles/marc21-loc", <http://example.org/resource/a.html>; rel="alternate"; type="text/html" [その他のレスポンスヘッダー]
特定のプロファイルに準拠するリソース表現の取得は、
リソースに対してHTTP GETリクエストを発行し、
望ましいプロファイルURIをAccept-Profileヘッダーで指定することで行われる。
プロファイルによるコンテンツネゴシエーションを実装するサーバーは、
返されたプロファイルを示すrel="profile"を持つ
Linkヘッダーを含むHTTPレスポンスヘッダーで応答MUSTである。
リクエストおよびレスポンス内のURIは、いずれも山括弧 '<'および'>'で囲まれMUSTである。
受け入れ可能なプロファイルURIの範囲を提供MAYであり、提供される場合、
それらはコンマで区切られるか、別々のAccept-Profileヘッダー内に
置かれMUSTである。
選好は、クライアントにより品質指標(q値)を順序付け機構として使用して示しMAYであり、
URIからセミコロン「;」で区切られる。q値を持つURI(この場合はURN)の例は
<urn:example:profile:x>;q=1.0,であり、URIは
<urn:example:profile:x>、q値はq=1.0である。
例 13は、
リソース/resource/aに対する単純なリクエストを示す。このリクエストは、
URI(この例ではURN)urn:example:profile:xおよび
urn:example:profile:yで識別されるプロファイルに従う表現への選好を持ち、
'q'値は前者へのより高い選好を示す。サーバーによって返されるレスポンスは、
rel="profile"を持つLink HTTPヘッダーにその識別子を含めることで、
urn:example:profile:xへの適合を示す。
GET /resource/a HTTP/1.1 Accept: text/turtle;q=0.8, application/xml;q=0.5 Accept-Profile: <urn:example:profile:x>;q=1.0,<urn:example:profile:y>;q=0.6 [その他のリクエストヘッダー] --- HTTP/1.1 200 OK Content-Type: text/turtle Link: <urn:example:profile:x>; rel="profile" [その他のレスポンスヘッダー]
コンテンツネゴシエーションを実行してリソース表現を返した後、サーバーは、 8.2.1 プロファイル一覧に従い、 他のメディアタイプで符号化され、他のプロファイルに準拠する代替リソースの利用可能性を示す Linkヘッダーも含めることがRECOMMENDEDである。
HTTPヘッダー機能プロファイルのプロファイルネゴシエーション手法は、プロファイルによる完全に自動化された コンテンツネゴシエーションを可能にするが、 この仕様の動機となるユースケースには、人間が操作可能なネゴシエーションも含まれていた。 また、6. 関連作業で述べたように、 以前のシステムおよび既存のシステムは、すでに複数の手段によって、 人間が操作可能なプロファイルによるコンテンツネゴシエーションを可能にしている。
人間が操作可能なプロファイルによるコンテンツネゴシエーションを可能にするとともに、 既存システムに類似した仕組みがこの仕様の抽象モデルのすべての側面をどのように満たし得るかを示すために、 この節は抽象モデルのクエリ文字列引数(QSA)機能プロファイルを示す。 この機能プロファイルは、抽象モデルのすべての必須関数がサポートされるという点で HTTPヘッダー機能プロファイルと機能的に同等であるが、 HTTPまたはその他の機能プロファイルと相互排他的ではない。 この仕様の実装は、複数の環境または同じ環境内の異なる方法で プロファイルによるコンテンツネゴシエーション機能を実装するために、 複数の機能プロファイルに適合してもよい。
独立したIETF文書 [PROF-IETF]の対象でもあるHTTPヘッダー機能プロファイルとは異なり、 QSA機能プロファイルはここで完全に指定される。 このQSA手法には2つの形式が提示される。 1つ目は固定キーワードの「QSA機能プロファイル」であり、 2つ目はサーバーが任意のキーワードを実装できる 「QSA代替キーワード機能プロファイル」である。 これらのさまざまな機能プロファイルは、 8.1 この仕様の機能プロファイルですべて識別される。
クエリ文字列は、指定されたパラメーターに値を割り当てるURLの一部である。
QSAは、Webブラウザー内で人間により、またその他の
クライアント/サーバー状況で、
サーバーに追加情報を配信するために一般的に使用される。
クエリ文字列のキー/値ペアは、URIのスキーム、オーソリティ、およびパスから
疑問符記号?で区切られ、等号記号
=で結合されたキー/値ペアで構成され、各キー/値ペアはアンパサンド記号
&で互いに区切られる。これは
[RFC3986]に従う。
QSAを使用して実装されたプロファイルによるコンテンツネゴシエーションを伴う リソース要求URIの例を、例 14に示す。
http://example.com/path/to/resource/a?_profile=prof-01
例 14では、
リソース表現について要求されたプロファイルはトークンprof-01によって示され、
これはクエリ文字列引数としてリソースのURIに追加されMUSTである。
この仕様の7.3.1 プロファイル
一覧の許可に従い、ここでは
トークンがプロファイル
prof-01の識別に使用されるが、そのトークンは1つの特定の
クライアント/サーバーセッション内でURIにマッピング可能でMUSTであり、
そのための仕組みを以下に説明する。
追加のQSAまたはその他の手法(たとえばHTTPヘッダー)の使用により、
コンテンツネゴシエーションの追加の側面をそのようなURIに含めMAYであるが、
含める場合、それらはプロファイルによるコンテンツネゴシエーションのためのリクエストの動作を
変更してMUST
NOTである。許容される包含を示すために、
例 14のURIを使用するクライアントが、
リクエストのコンテンツをRDFとして、Turtle [TURTLE]仕様に従って直列化することへの選好を示したい場合、
Turtle用のIANAメディアタイプ一覧のトークンである
text/turtleを使用し、
URI構成要件 [RFC3986]に従って、
例 15のようにURIを構成できる。
http://example.com/path/to/resource/a?_profile=prof-01&_mediatype=text/turtle
この仕様には、クエリ文字列引数を使用する人間クライアント向けに、 QSAキー命名要件によって区別される2つの異なる機能プロファイルが含まれる。 2つのプロファイルは「QSA機能プロファイル」と 「QSA代替キーワード機能プロファイル」であり、 前者は後者のプロファイルである。これは、前者がこの仕様の必須機能を実現する方法について、 より厳格な適合規則(「より狭い」規則)を含むためである。 これらの機能プロファイルは、 8.1 この仕様の機能プロファイルで識別および定義される。
「QSA機能プロファイル」に準拠するためには、
QSAキー_profileを
プロファイルトークンまたはURIを示すために使用MUSTであり、キー_mediatypeはリソース表現のメディア
タイプを示すために使用SHOULDである。
「QSA代替 キーワード機能プロファイル」に準拠する場合、[RFC3986]の仕様内で許容される任意のキー値を、 望ましいプロファイルを示すために使用MAYである。 ただし、この機能プロファイルに準拠するサーバーは、以下の 8.3.4 QSAキー発見で詳述されるように、 クライアントが使用される値を発見できるようにする仕組みを追加で提示MUSTである。
「QSA機能プロファイル」への適合のため、
_profile QSAキーは、
クライアントがプロファイル一覧リクエストを行えるようにするために、
サーバーにより
サポートされるSHOULDである。この
リクエストでは、予約済みトークンaltを使用するSHOULDである。
例: _profile=alt。
「QSA代替キーワード機能
プロファイル」への適合のためには、_view=alternatesなどの他のキー/値ペアを使用MAYである。
ただし、その場合、実装するサーバーは
8.3.4 QSAキー発見に従って、
そのキーを発見する手段を提供MUSTである。
プロファイル一覧リクエストに対する サーバーのレスポンスは、 そのリソースの表現についてサポートするすべてのプロファイルの一覧、および任意でそれらの表現に対応する サポートされるメディアタイプを提示することであるSHOULD。
サーバーは、HTTPヘッダー機能プロファイルに従い(Linkヘッダーを使用して)、 レスポンスのHTTPヘッダー内に代替プロファイル情報を表現する SHOULDであり、リソースの既定プロファイル表現の代わりに、 レスポンス本文内にもその情報を表現MAYである。 この本文コンテンツの許可は、人間が低レベルのHTTP情報を表示する必要なく、 Webブラウザーでリソースの代替プロファイル準拠表現の選択肢を容易に読めるようにするためである。
サーバーがHTTP本文内に代替プロファイル情報を提供する場合、 サーバーは、以下のプロファイルによるリソース取得関数で使用されるものと同じ メディアタイプネゴシエーション方法を使用して、 クライアントがレスポンスの特定のメディアタイプについてネゴシエートすることを許可MAYである。
HTTP本文コンテンツおよびHTTPヘッダーコンテンツとしてJSON形式で配信される リソースの代替プロファイル表現に対するリクエストの例は、 例 16のようになる。
GET /resource/a?_profile=alt&_mediatype=application/json HTTP/1.1
---
# レスポンスは、リソースの表現を、トークンprofile-xおよびprofile-yで識別される
# 2つのプロファイルに従って配信できることを示す。
# また、profile-x準拠表現はXMLおよびJSONで利用可能であり、
# 一方profile-y準拠表現はXMLでのみ利用可能であることを示す。
# レスポンスのJSON本文内のコンテンツはLinkヘッダーの内容と同等であり、
# Link情報が図3でそうであるように、代替表現データモデルへ容易に対応付けできる。
# LinkヘッダーとJSON本文はいずれもプロファイルURI/トークン対応付けを含む。
HTTP/1.1 200 OK
Content-Type: application/json
Link: <http://www.w3.org/ns/dx/connegp/profile/qsa>; rel="profile",
<http://example.org/resource/a?_profile=profile-x&_mediatype=application/json>;
rel="canonical";
type="application/json";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?_profile=profile-x&_mediatype=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?_profile=profile-y&_mediatype=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/y"
{
"resource": "http://example.org/resource/a",
"profiles": [
{
"token": "profile-x",
"uri": "http://otherexample.org/profile/x",
"media_types": ["application/json", "application/xml"]
},
{
"token": "profile-y",
"uri": "http://otherexample.org/profile/y",
"media_types": ["application/xml"]
}
]
}
QSA機能プロファイルに従うこの仕様の実装は、
代替表現データモデルに従ってその代替表現情報を伝達MUSTである。
それらは、HTTPヘッダー機能プロファイルに従ってHTTP Linkヘッダーを使用して
そうしてもMAYよく、また他のアプローチを使用してもMAYよい。
[RFC8288] (Web Linking)の導入で述べられているように、 HTMLおよびその他のいくつかのデータモデルには「明確に定義されたリンクの概念」があるため、 QSA実装者は、HTMLまたは他のデータモデル/形式で、 おそらくHTTP本文コンテンツを介して代替表現データモデル情報の伝達を実装MAYである。 これは、QSA実装の人間のクライアント 利用者にとって、Webブラウザー内またはダウンロード可能なファイル内で可視になることにより役立つ場合がある。
例 10の
Linkヘッダー情報の潜在的なHTML表現を、
以下の例 17に示す。
上記の例 16は、
代替表現データモデルに従ったLinkヘッダー情報の潜在的なJSON形式表現を示していることに注意。
# 前の例のLinkヘッダーのうち1つを変更し、altp:Representationクラスインスタンスについて
# 空白ノードと絶対URIの違いを示す
# (<http://example.org/resource/a>; → <http://example.org/resource/different>;)
Link:
<http://example.org/resource/a>;
rel="canonical";
type="text/turtle";
formats="urn:example:profile:x",
<http://example.org/resource/a>;
rel="alternate";
type="text/turtle";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:x",
<http://example.org/resource/different>;
rel="alternate";
type="application/xml";
formats="urn:example:profile:y",
<http://example.org/resource/a>;
rel="alternate";
type="text/html"
# 上記のLinkヘッダーをHTMLで表現したもの。
# Alternate Profileのrdfs:Resourceは、このレスポンスを生成したリクエストから既知であり、
# HTMLコンテンツ内では与えられないと仮定する
<h3>代替表現</h3>
<table>
<thead>
<tr>
<th>表現へのリンク</th>
<th>プロファイル</th>
<th>メディアタイプ</th>
<th>既定か?</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="?_profile=x">Profile X、RDF</a></td>
<td><code>urn:example:profile:x</code></td>
<td><a href="https://w3id.org/mediatype/text/turtle">RDF (turtle)</a></td>
<td>はい</td>
</tr>
<tr>
<td><a href="?_profile=y&_mediatype=text/turtle">Profile Y、RDF</a></td>
<td><code>urn:example:profile:y</code></td>
<td><a href="https://w3id.org/mediatype/text/turtle">RDF (turtle)</a></td>
<td>-</td>
</tr>
<tr>
<td><a href="?_profile=x&_mediatype=application/xml">Profile X、XML</a></td>
<td><code>urn:example:profile:x</code></td>
<td><a href="https://w3id.org/mediatype/application/xml">XML</a></td>
<td>-</td>
</tr>
<tr>
<td><a href="http://example.org/resource/different?_mediatype=application/xml">Profile Y、XML</a></td>
<td><code>urn:example:profile:y</code></td>
<td><a href="https://w3id.org/mediatype/application/xml">XML</a></td>
<td>-</td>
</tr>
<tr>
<td><a href="?_mediatype=text/html">プロファイルなし、HTML</a></td>
<td>-</td>
<td><a href="https://w3id.org/mediatype/text/html">HTML</a></td>
<td>-</td>
</tr>
</tbody>
</table>
現在、メディアタイプによるHTTPコンテンツネゴシエーションの慣例では、
text/htmlやapplication/ld+jsonなどのメディアタイプにトークンを使用し、
そのトークンはIANAのメディアタイプ一覧に登録されている。
プロファイルによるコンテンツネゴシエーションシステムの実装者は、メディアタイプ識別子にはその一覧のトークンを使用し、
他のコンテンツネゴシエーション次元(言語など)の識別子についてはHTTP
コンテンツネゴシエーションのベストプラクティスに従うSHOULDである。
プロファイルの中央登録簿を作成する提案はない。これは、確立される可能性の高いプロファイルの数と、 プロファイルがコミュニティ固有の性質を持つ可能性が高いこと (個々のコミュニティは、自身の必要に応じたプロファイルを作成し、それらは広く関連するものではない)を考えると、 長期的には持続不可能であると、これらの著者が考えているためである。
7.2 プロファイル 識別に従い、すべてのプロファイルはURIによって識別されMUSTである。 URIは普遍的に一意であり、識別子の重複を避けるための登録を必要としないためである。 ただし、この仕様のQSA機能プロファイルのいずれかに準拠するシステムは、 クライアント/サーバー相互作用中にプロファイルを識別するためにURIを使用する代わりに、 未登録で普遍的には一意でないトークンを使用してプロファイルを識別MAYである。 しかし、その場合、クライアントがプロファイルトークン/URI対応付けを発見する方法を提供 MUSTである。
プロファイルURI用のトークンをクライアントに利用可能にしたいQSAサーバーは、 8.2.1.2 トークン対応付けにおけるHTTPヘッダー機能プロファイルのために提供される 指示に従うSHOULDである。
QSAベースのプロファイルネゴシエーションが行われるリソースURLは、 どのQSAベースのシステムにおいても、他のリソースURIの QSA値そのものになるべきではないSHOULD NOT。 そのような仕組みは内部的に使用される場合があり、従来システムではプロファイルネゴシエーションに使用されるが、 これらのQSAプロファイルへの適合をより認識しやすくするために、 クライアントからは隠すのが望ましい。 例 18はこれを示す。
Media Type Zで、Profile Yに従うResource Xの表現について:
次の代わりに:
GET /single/endpoint \
?resource=http://example.org/resource/X \
&_profile=Y \
&_mediatype=Z HTTP/1.1
次を使用する:
GET /resource/X?_profile=Y&_mediatype=Z HTTP/1.1
この仕様の「QSA機能プロファイル」プロファイルに適合するために、
サーバーは、
クライアントが_profileクエリ文字列で識別するプロファイルに従って
リソースを要求できるようにしMUSTである。
プロファイルの識別にはトークンまたはURIのいずれかを使用できるため、
サーバーはどちらも受け入れMUSTである。サーバーは符号化されたURIと符号化されていないURIの両方を受け入れ
MAYであるが、一方のみを受け入れMAYでもある。
URIは山括弧'<'および'>'で囲まれMUSTである。
この仕様の「QSA代替キーワード 機能プロファイル」プロファイルに適合するために、 サーバーは、 サーバー実装者が選択したキーで識別するプロファイルに従って、 クライアントがリソースを要求できるようにしMUSTである。 ただし、その場合、サーバーは 8.3.4 QSAキー発見に従って、 そのキーを発見する手段も提供MUSTである。
プロファイルによるリソース取得を実装するQSA
サーバーは、
複数のプロファイルのうち任意の1つに従うリソース表現への選好をクライアントが示せるようにする
SHOULDである。そのようなリクエストは、プロファイルを識別するために使用される
QSAキー/値ペアの値の中に、
プロファイル識別子(URIまたはトークン)の順序付き一覧を含めることによって
プロファイル選好を示しMUSTである。
たとえば、リソース表現について、profile-z、次に
http://example.org/profile/y、最後に
profile-xの順で選好するクライアントは、次のようなリクエストを行うことができる。
GET /resource/a?_profile=profile-z,<http://example.org/profile/y>,profile-x
サーバーは、レスポンス内にrel="profile"を持つ
Link HTTPヘッダーを含めることにより、実際に返されたプロファイルを示し
MUSTであり、返されたプロファイルを他の方法でも示し
MAYである。サーバーはプロファイルを識別するエスケープ済みURIをサポートする
SHOULDであり、エスケープされていないURI、またはその両方もサポートMAYである。
リソース表現について複数のメディアタイプ形式を実装するサーバーは、 同様の方法でクライアントがそれらの選好順序を指定できるようにするSHOULDである。
この関数は、この仕様の「QSA代替キーワード 機能プロファイル」プロファイルへの適合を主張するサーバーにのみ関連する。
「QSA代替
キーワード機能プロファイル」への適合を主張するサーバーは、
「QSA機能プロファイル」の_profileの代わりに使用される
QSAキーと、
任意のキー/値の組み合わせによって実装されることが求められる_profile=altの同等物を、
クライアントが発見できるようにする方法を実装MUSTである。
これにより、サーバーについてほとんど知らないクライアントが、
プロファイル一覧およびプロファイルによるリソース取得リクエストの作成方法を発見できる。
サーバーは、メディアタイプおよびその他のコンテンツネゴシエーション次元を示すために使用される QSAキーもクライアントが発見できるようにする SHOULDである。
「QSA代替キーワード機能プロファイル」がサポートされるリソースへの任意のリクエストに応答するサーバーは、 HTTP機能プロファイルに従って、代替プロファイルおよびメディアタイプを示すHTTPヘッダーを含める SHOULDである。 その代わりに、またはそれに加えて、同じ情報を示すHTTP本文コンテンツを提供 MAYである。そうする場合、そのような情報はURIリクエストに対する既定レスポンス、 すなわちQSAを伴わないリクエストへのレスポンス内に存在する SHOULDである。 一連のリクエスト例を例 19に示す。
# クライアントはContent Negotiation by Profileがサポートされているかどうかを知らずに
# Resource Aへのリクエストを行う。念のためAccept-Profile
# ヘッダーを提供する。効率を高めるため、クライアントはGETの代わりに
# HEADリクエストを行うこともできた
GET /resource/a HTTP/1.1
Accept-Profile: <http://example.org/profile/x>
# サーバーはHTTP Get Resource By Profileリクエストを理解しない
# (HTTPヘッダー機能プロファイルをサポートしない)が、
# 代替リソース表現を示すHTTP Linkヘッダーを提供できる。
# Linkヘッダーから、_profileおよび_mediatype以外のキー、
# viewおよびformatが使用されていることが分かる。したがって、これは
# QSA機能プロファイル準拠システムではなくQSA Altである。
# 利用可能なリソース表現はprofile-xおよびprofile-yに準拠する。
# profile-x準拠表現はHTMLおよびTurtleで利用可能であり、
# profile-y準拠表現はXMLでのみ利用可能である。
HTTP/1.1 200 OK
Link:
<http://example.org/resource/a?view=profile-x&format=text/html>;
rel="canonical";
type="text/html";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?view=profile-x&format=text/turtle>;
rel="alternate";
type="text/turtle";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?view=profile-y&format=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/y"
# ここでは、サーバーが提供されたプロファイルを直接示していない
# (rel="profile"を持つLinkヘッダーは存在しない)が、
# rel="canonical"を持つLinkヘッダーから推論できることに注意
上記の例 19のLinkヘッダーは、
プロファイル一覧リクエストが行うすべての情報を伝達するが、
Webブラウザーでは直接見えない。例 16は、
プロファイルを一覧表示する同等のLinkヘッダーおよびHTTP本文情報を含む
リクエスト/レスポンスペアを示している。後者はブラウザーで可視であるが、
このリクエストを構成するクライアントは、サーバーの既定リソース表現ではなく、
このレスポンスを起動するためにQSAキー/値ペア
_profile=altが使用されることを知っていることに依存している。
「QSA代替
キーワード機能プロファイル」に適合する場合、プロファイル一覧に使用される
QSAキー/値ペアをクライアントに伝達するために、
サーバーは、上記のプロファイル一覧通信の方法に従い、
リソースの表現がURI
http://www.w3.org/ns/dx/conneg/altrによって識別される
代替プロファイルデータモデルに準拠して利用可能であることを示す
SHOULDである。これは、
例 20で示されており、
例 19への拡張である。
GET /resource/a HTTP/1.1
Accept-Profile: <http://example.org/profile/x>
--
HTTP/1.1 200 OK
Link:
<http://example.org/resource/a?view=profile-x&format=text/html>;
rel="canonical";
type="application/html";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?view=profile-x&format=text/turtle>;
rel="alternate";
type="text/turtle";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a?view=profile-y&format=application/xml>;
rel="alternate";
type="application/xml";
formats="http://otherexample.org/profile/y"
<http://example.org/resource/a?view=altrep&format=application/ld+json>;
rel="alternate";
type="application/ld+json";
formats="http://www.w3.org/ns/dx/connegp/altr"
[既定レスポンスコンテンツ]
例 20は、
リソース/resource/aについて、
7.4 代替
表現データモデルで定義される代替プロファイルデータモデルを識別するURIである
http://www.w3.org/ns/dx/connegp/altrという仕様/プロファイルに準拠する表現が存在することを示す。
この例はまた、QSA view=altrepを使用して、
代替プロファイルデータモデル準拠レスポンスへのリクエストを構成できることも示している。
したがって、http://example.org/resource/a?view=altrep
を逆参照すると、/resource/aの既定表現ではなく、
例 20のLink
ヘッダーコンテンツと同等のコンテンツも生成するレスポンスが生成される。
Linkヘッダーフィールド内で使用される場合、
属性tokenは、
anchor属性で与えられる完全なプロファイルURIの代替として
クライアントが使用MAYできる
トークンを指定するために用いられる。
プロファイルURIの代替としてトークンを使用することは、 既定では現在のリソース (すなわち現在のリクエストURIによって識別されるリソース)に限定されることに注意すべきである。 サーバーはこれについてより広いスコープを使用MAYであるが、 サーバー文書が他の何らかの手段で明示的に別の指示を与えない限り、 クライアントはそれに依存すべきではない。
profile属性の値のABNFはtoken / quoted-stringであり、
ここで「token」および「quoted-string」は
[RFC9110]の
第5.6節
で定義されるとおりである。[RFC8288]の
第3節で定義される
link-param値の規則が適用される。
# "anchor"要素内のプロファイルURIは、トークン"igsn-r1"に結び付けられる # さらに、関係"type"は、anchorリソースが"dcterms:Standard"型であることを # 通知するために使用される Link: <http://www.w3.org/ns/dx/prof/Profile>; rel="type"; token="igsn-r1"; anchor=<http://schema.igsn.org/description/1.0>
この仕様へのシステムの適合性を評価するために使用されるソフトウェアは、オンラインコード リポジトリ https://github.com/w3c/conneg-prof-testing で管理される。
この節は非規範的である。
この文書で与えられる機能プロファイルの実装およびその適合性 テスト結果は、Content Negotiation by Profile実装レポートに示される。 そのレポートには、適合性テストツールの説明と、そのコードへのアクセスも含まれる。
この節は非規範的である。
編集者は、この文書に対してDataset Exchange Working Groupのすべてのメンバー、特にAnnette GreinerおよびAntoine Isaacが行った貢献に深く感謝する。
編集者はまた、この文書の改善に使用されたコメントを提供した次の非Working Group関係者に感謝する。 Erik Wilde、Gregg KelloggおよびIrene Polikoff。
とりわけ、Kam Hay Fungには、非常に広範なコメントと提案によって問題を発見し、 修正してくれたことに特別な謝意を表する。
最後に、編集者はDataset Exchange Working Groupの議長であるPeter WinstanleyおよびKaren Coyleに感謝する。
この節は非規範的である。
この仕様の第2回公開作業草案、2019年4月30日からの変更点は次のとおりである。
このバージョンにおける次の機能はリスクありと見なされる。
この節は非規範的である。
ネゴシエーションおよび転送にHTTPを使用することは、そのプロトコルに関連するすべてのプライバシーおよびセキュリティ上の問題が、 プロファイルネゴシエーションにも関連することを意味する。たとえば、 User Agent、Acceptヘッダー、IPアドレスなどの情報は、 識別情報として使用される可能性があり、特にIPアドレスは地理的位置 および組織所属に関する情報を追加する。 さらに、ネゴシエーションプロセスの開始時に受け入れ可能なプロファイルの一覧を提示することは、 利用者の関心に関する情報を明らかにし、 そのような情報を利用者プロファイルに追加するために使用される可能性がある。
これらの問題についてのより完全な見解については、 この成果物のためのプライバシーおよびセキュリティ 質問票を参照。
この仕様における機能プロファイルへの適合性の実証のために満たす必要がある要件を、 機能プロファイルごとに以下に示す。
この仕様への適合性をテストまたは実証するシステムは、ここで与えられる 要件IDを参照して行うべきである。たとえば、QSA機能 プロファイルへの適合性を実証する場合、要件R.2.1.aと、その要件本文 リソース表現が準拠するプロファイルは、リソースのURIに クエリ文字列引数として追加MUSTであるトークンによって示される。 を満たさなければならず、その要件に対するサーバーの実装は実証可能でなければならない。
Link
ヘッダーを返すSHOULDである。
rel="canonical"によって識別されるSHOULDであり、
その他の表現は
rel="alternate"によって識別される。
rel="profile"を持つ
Linkヘッダーを含むHTTPレスポンスヘッダーで応答MUSTである。
Accept-Profileヘッダーで参照されるURIは、
山括弧'<'および'>'で囲まれMUSTである。
Accept-Profileヘッダー内に置かれMUSTである。
<urn:example:profile:x>;q=1.0,であり、URIは
<urn:example:profile:x>、q値はq=1.0である。
_profileを、
プロファイルトークンを示すために使用MUSTである。
_mediatypeは、リソース表現のメディアタイプを示すために使用
SHOULDである。
_profile=altは、
クライアントがプロファイル一覧リクエストを行えるように、
サーバーによりサポートされるSHOULDである。
_profileの代わりに使用される
QSAキーをクライアントが発見できるようにする方法を実装
MUSTである。
_mediatypeの代わりに使用されるQSAキーを
クライアントが発見できるようにする方法を実装MUSTである。
xがサーバーにとっての_profile相当、yが
サーバーにとってのalt相当であるQSA
キー/値ペアx=yは、クライアントがプロファイル一覧リクエストを行えるように、
サーバーによりサポートされるSHOULDである。
_profile=altの代わりに使用される
QSAキー/値ペアをクライアントが発見できるようにする方法を実装
MUSTである。
この仕様には、8.1 この仕様の機能 プロファイルで 識別され、言葉で説明される、いくつかの別個の機能プロファイルが含まれる。 この付録は、Profiles Vocabulary [DX-PROF]に従って、 これらの機能プロファイルおよびそれらの関係の記述を提示する。
コードリスト1のRDF(turtle構文)コードは、
Content
Negotiation
by
Profileをdcterms:Standardとして定義する。
[DX-PROF]におけるその定義は、
この文書における仕様の定義と一致する。この
文書は振る舞いを記述しているため、この仕様は機能
仕様であることに注意。したがって、その4つのプロファイルは、
通常のPROFモデリングに従い
prof:Profilesと呼ばれる。これら4つの機能プロファイルは、
標準を直接プロファイル化するもの、またはQSA
機能プロファイルの場合には、標準をプロファイル化する別のプロファイルをプロファイル化するものとして、
階層で提示される。これはコードリスト下の図
4でも図示される。
コードリスト1に提示されるコードは、RDFファイル profiles.ttlとしても利用可能である。
QSA機能プロファイルプロファイルが QSA代替キーワード 機能プロファイルプロファイルをプロファイル化するものとしてモデル化される理由は、 QSA 機能プロファイルプロファイルが、QSA代替キーワード機能プロファイルよりも Content Negotiation by Profileの、より制約された「より狭い」 仕様であり、QSA機能 プロファイルプロファイルに適合するものは、必然的に QSA代替キーワード機能プロファイルプロファイルにも適合し、 それにより何かのプロファイルであることの意味についての[DX-PROF]の定義を満たすためである。
8.1 この仕様の機能
プロファイルで与えられるこの仕様の機能プロファイルの識別と、
この付録でProfiles Vocabulary [DX-PROF]を使用して記述される
それらの関係により、
システムは[DX-PROF]の仕組みを使用して、
この仕様またはその任意の機能プロファイルへの適合性を示すことができる。
これは、[DCTERMS]述語
dcterms:conformsTo
を使用して行われる。したがって、たとえばURI<http://example.org/system/a>で識別されるシステムが、
URI<SPEC_OR_PROFILE_URI>で識別される仕様または機能プロファイルに適合すると主張する場合、
次のように行う。
<http://example.com/system/a> dcterms:conformsTo <SPEC_OR_PROFILE_URI> .
<SPEC_OR_PROFILE_URI>は、この仕様のURI
https://www.w3.org/TR/dx-connegp/であってもよいが、最良の場合には、
8.1
この仕様の機能プロファイルに一覧表示されるプロファイルURIのいずれか、
または別の機能プロファイルのURIである。
機能プロファイルURIが引用されると、それらは仕様全体よりも範囲が狭いため、
何に適合しているかがはるかに明確になるからである。
複数の適合対象、すなわちこの仕様または
その機能プロファイルへの適合を主張したいシステムは、
dcterms:conformsToを複数回使用してそうすることができる。
コードリスト2のコードは、[VOCAB-DCAT-2]を使用して文書化された架空のWebサービスを示し、
例49など、
その例から一部を借用している。
含まれているのは、[VOCAB-DCAT-2]および[DX-PROF]に従って使用される述語dcterms:conformsToである。
ここで主張される適合性は、QSA代替キーワード
機能プロファイルプロファイルに対するものであり、
そのプロファイルは、8.1 この仕様の機能
プロファイルに従って識別される
URI http://www.w3.org/ns/dx/connegp/profile/qsa-altによって示される。
7.4 代替表現データモデルは、 抽象モデル、すなわち具体的なモデリング システムでの実装を持たないモデルを提示する。この付録は、このモデルのOWL [OWL2-OVERVIEW] による実装と、特定のシナリオで使用するために提案される モデルへの拡張の両方を提示する。
7.4 代替表現データモデルのデータモデルのWeb Ontology Language [OWL2-OVERVIEW] 実装を、以下のコードリスト3に示す。 これはファイルaltr.ttlとしても利用可能である。
代替プロファイルデータモデルは、プロファイルによるコンテンツネゴシエーション状況で有用な
追加情報を含めるように拡張できる。
明らかに有用な拡張の1つは、コンテンツネゴシエーションの他の次元、特にメディアタイプに関する
情報を含めることである。コードリスト4には、データモデルに追加できるメディアタイプ表示のための、
Dublin Core Termの[DCTERMS]
dcterms:formatプロパティおよび
dcterms:MediaTypeクラスのRDF定義が含まれる。
これはコードリスト4でOWLとして表現される。
例 22は、
例 23の内容に続いて、
この拡張モデルの使用例を示す。
PREFIX altr: <http://www.w3.org/ns/dx/connegp/altr#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
# このResource Aには5つのRepresentationがあり、そのうち3番目が既定である。
# 一部のRepresentationは同じStandardに準拠するが、
# 異なるMedia Typeに従って形式化されている。一部のRepresentationには
# Media Type情報が含まれない。
<http://example.org/resource/a>
a rdfs:Resource ;
rdfs:label "Resources A" ;
altr:hasRepresentation :rep-1 , :rep-2 , :rep-3 , :rep-4 , :rep-5 ;
altr:hasDefaultRepresentation :rep-3 .
:rep-1
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/x> ;
dcterms:format "application/xml" .
:rep-2
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/y> .
# この表現は、<http://otherexample.org/profile/z>に準拠する
# 表現集合の既定である。
:rep-3
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/z> .
dcterms:format "text/html" ;
ex:isProfilesDefault "true" .
:rep-4
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/z> ;
dcterms:format "text/turtle" .
:rep-5
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/z> ;
dcterms:format "application/ld+json" .
代替プロファイルデータモデルのOWL実装に準拠して作成されたRDFデータのインスタンス例を 例 23に示し、 続いて同じ内容を複数形式で示すものを 例 24に示す。
PREFIX altr: <http://www.w3.org/ns/dx/connegp/altr#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
# このResource Aには3つのRepresentationがあり、そのうち3番目が既定である
<http://example.org/resource/a>
a rdfs:Resource ;
rdfs:label "Resources A" ;
altr:hasRepresentation :rep-1 , :rep-2 , :rep-3 ;
altr:hasDefaultRepresentation :rep-3 .
# 各Representationと、それぞれが準拠するStandard、X、YおよびZ
:rep-1
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/x> .
:rep-2
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/y> .
:rep-3
a altr:Representation ;
dcterms:conformsTo <http://otherexample.org/profile/z> .
# 前の例の内容を、この仕様のHTTPアプリケーションプロファイルに従って
# HTTP Linkヘッダー内に表現したもの。
# 既定Representationはrel="canonical"の使用によって示される。
# Representationは、コンマ区切りのLink結果ごとに1つずつ見られ、
# Resource URI、それが準拠するStandardのURI、およびrel属性の組み合わせのみによって
# 識別されることに注意。個別の識別子は持たない。
Link:
<http://example.org/resource/a>;
rel="alternate";
formats="http://otherexample.org/profile/x",
<http://example.org/resource/a>;
rel="alternate";
formats="http://otherexample.org/profile/y",
<http://example.org/resource/a>;
rel="canonical";
formats="http://otherexample.org/profile/z"
---
# 前の例の内容を、HTTPレスポンスのHTML本文内で
# 表現される可能性があるような表形式で表現したもの。
# Resource URIにはQuery String Argumentsが含まれ、
# 指定された場合、下記のQSAアプリケーションプロファイルに従って
# 個々のRepresentationを返すことができる。
---------------------------------------------------------------------------------------
| 短縮されたResource URI | 準拠するprofileのURI | 既定 |
---------------------------------------------------------------------------------------
| http://.../resource/a?_profile=prof-x | http://otherexample.org/profile/x | |
| http://.../resource/a?_profile=prof-y | http://otherexample.org/profile/y | |
| http://.../resource/a?_profile=prof-z | http://otherexample.org/profile/z | はい |
---------------------------------------------------------------------------------------
DCAT [VOCAB-DCAT-2]の
dcat:Datasetはdcat:DataServiceを介してアクセス可能な場合があり、
そのサービスはこの仕様の1つ以上の機能プロファイルをサポートする場合がある。この場合、サポートは、
コードリスト5に示すように、
述語dcterms:conformsToを使用して、サービスが関連する機能プロファイルを参照することにより
宣言されるべきである。
DCAT 2は、データサービスがアクセスを提供するデータセット内の個々のデータ項目を、
識別子によってアクセスできるようにするかどうかを指定する標準的手段を提供しないため、
この例は全体として配布されるデータセットに関するものであることに注意。
それでもなお、dcterms:conformsToの使用は、
個々の項目にアクセスする仕組みを宣言するデータサービスにも適用される。
この仕組みはdcat:endpointDescriptionを介して識別される場合がある。
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: