この文書「Open Annotation Data Model Open Annotation」(2013年2月8日付コミュニティドラフト)は、W3C の Open Annotation Community Groupによる"Open Annotation Data Model (W3C Community Draft, 08 February 2013)"の日本語訳です。この日本語訳はあくまで参考情報であり、W3Cの公式な日本語訳ではありません。翻訳・解釈に誤りがある可能性があります。原文の最新版が存在する可能性があります。
Open Annotation Data Model モジュール: 指定子(Specifier)と特定リソース(Specific Resource)2013年2月8日付コミュニティドラフト(Community Draft) |
コアデータモデルの構造物のみを使用して、フラグメントURIによってリソースのある部分を参照するアノテーション(Annotation)を作成することができる一方で、これだけでは十分ではない状況が多くある。例えば、画像内の単純な円形の領域もしくはそれを横切る斜め線でさえ可能ではない。HTMLページ内のテキストの任意の範囲の選択、おそらくもっともシンプルなアノテーション概念であるが、これもフラグメントURIではサポートされていない。本仕様のこのモジュールは、興味のあるセグメントを識別して記述する方法、リソースの正しい表現を獲得する方法、アノテーション(Annotation)とスタイル情報を関係づけ、そのアノテーション(Annotation)に固有の本体(Body)リソースとターゲット(Target)リソースの範囲情報を提供する方法を紹介する。
Open Annotationモデルにおける指定子(Specifier)はアノテーション(Annotation)が参照するリソースの文脈的な詳細を記述するために使用される。これは、例えば頻繁に変更されるリソースの適用可能なタイムスタンプのように、あるリソースの特定のセグメントを記述することによって、もしくはレンダリングのためのスタイル情報を提供することによってなされるかもしれない。セグメントがグローバルに参照できる同一性を有することを確実にするために、本モデルでは、リソース、典型的には指定子(Specifier)によって記述されたあるセグメントを識別するために使用するSpecific Resourceクラスを導入する。
指定子(Specifier)は、アノテーション(Annotation)における本体(Body)もしくはターゲット(Target)の役割を担うそれぞれの特定リソース(Specific Resource)と直接関係づけられている。これに関連して、完全なリソースはソース(Source)リソースと呼ばれ、特定リソース(Specific Resource)を構成するソース(Source)の側面を決定する方法を指定子(Specifier)が記述する。例えば、画像の円形の領域は指定子(Specifier)によって記述された特定リソース(Specific Resource)によって識別される。完全な画像リソースがソース(Source)である。型付け、フォーマット、由来のような、本体(Body)リソースとターゲット(Target)リソースについて表現されることが可能なプロパティと関係(Relationship)は、ソース(Source)リソースに付属されたままであるべきである。
Open Annotation Data Modelは、異なる役割を持つ2つの主たる指定子(Specifier)クラス、oa:State
クラスとoa:Selector
クラスを定義する 。Stateクラスは、ソース(Source)リソースの正しい表現を決定する方法を記述する。Selectorクラスはその表現の正しいセグメントを発見する方法を記述する。特定リソース(Specific Resource)は、Styleクラスを通してそれを関係づけられたレンダリングに関する情報と、別のリソース内にある外観のような、そのリソースにより明確なスコープを提供するその他のリソースに関する情報も持っているかもしれない。
なお、Stateクラスがある場合、正しい表現が取得されていることを確認するために最初に処理されるだろう。そして、Selectorクラスがある場合、その表現の正確なセグメントを決定するために適用されるであろう。最終的にStyleクラスがある場合、正しいレンダリングもしくはリソースもしくはセグメントを確実にするために適用されるだろう。Scopeクラスはレンダリングに直接影響を与えないため、ユーザーインターフェイスやアプリケーションに適すると判断される方法で処理をされるかもしれない。
Stateクラス、SelectorクラスとStyleクラスは、複数のアノテーション(Annotation)によって、再利用可能であることが意図されている。そのため、ソース(Source)リソースに直接リンクされていない。例えば、Selectorクラスのインスタンスは、複数のリソースの同じセグメントを選択するために再利用されてもよい(MAY)。また、Stateクラスのインスタンスは矛盾のない時間もしくはHTTPリクエストヘッダのセットを確かなものとするために再利用されていもよい(MAY)。特定リソース(Specific Resoure)に関係づけられた情報がStateクラス、Selectorクラス、Styleクラス、Scopeクラスを含む新しい文脈に適用可能であるならば、特定リソース(Specific Resource) も再利用されてもよい(MAY)。
指定子(Specifier)の記述は、外部リソースもしくは埋め込まれたリソース、もしくはグラフ付きのRDFプロパティとして伝達してもよい(MAY)。記述は可能な限り既存の規格を使用すべきである(SHOULD)。指定子(Specifier)がHTTP URIを持つ場合、URIがデリファレンスされた際にその記述、そして、唯一その記述のみが返されなくてはならない(MUST)。
特定リソース(Specific Resource)がHTTP URIを持つ場合、URIがデリファレンスされた際に、URIが識別するソース(Source)リソースの正確なセグメントと唯一そのセグメントが返されなくてはならない(MUST)。興味のあるセグメントは、画像のある領域であり、特定リソース(Specific Resource) がHTTP URIを持つ場合、そのURIがデリファレンスされることで、選択された画像の領域はアノテーションが作成された時間のものとして返されなくてはならない(MUST)。通常、これはサポートするための負担になる。そのため、特定リソース(Specific Resource)はUUIDやURNのようなグローバルにユニークなURIで識別されるべきである(SHOULD)。もしその他のアノテーション(Annotation)やシステムから特定リソース(Specific Resource)を参照できることが重要ではないと考えれる場合は、空白ノードを代わりに使用してもよい(MAY)。
注意事項:同じSpecifierクラスは、特定ターゲット(Specific Target)と特定本体(Specific Body)の両方に使用される。しかし、このモジュールの図は、両方のために採用されている同じモデルのうち1つのみを描いている。
語彙項目 タイプ 説明 oa:SpecificResource Class 特定リソース(Specific Resource)のクラス。
oa:SpecificResourceクラスは、より明確な範囲もしくはその他のリソースの状態としてその役割が明確になるようにするためにoa:SpecificResourceと関係づけられているべきである(SHOULD)。oa:hasSource Relationship 特定リソース(Specific Resource)とそれのより明確な表現であるリソースの関係。
特定リソース(Specific Resource)と関係づけられた oa:hasSource関係をちょうど1つもたなくてはならない(MUST)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource } => <anno1>
多くのアノテーション(Annotation)をターゲット(Target)として、リソース全体よりもリソースの一部を参照する。例としては、画像またはビデオ内のある領域上のアノテーション(Annotation)、テキストのある範囲、オーディオファイル内のある時間のセグメント、もしくはデータセットのある断片が挙げられる。同様にセグメントは、ビデオの中のある特定の箇所やテキストのある特定のパラグラフにつけられたコメントのような、アノテーション(Annotation)の本体(Body)かもしれない。
セレクタ(Selector)は、ソース(Source)リソースの取得された表現の中から 興味のあるセグメント を決定する方法を記述する指定子(Specifier)である。セレクタ(Selector)の性質は、セグメントが伝達される表現の型に依存するであろう。例えば、画像のある部分を記述するために使用される方法は、テキストの正しい段落、またはデータセットの正しいスライスを発見するために使用される方法と非常に異なるものになる。
ただ1つのセレクタ(Selector )は、1つの特定リソース(Specific Resource)と関係づけることができる。任意であり同等である異なるセレクタの間での選択、もしくは全てが処理されるべき一連のセレクタを表現するため、複数のセレクタが求められる場合、多重構造物モジュールの中で説明される構造物を使用する必要がある。
一般的に、FragmentSelectorクラス、TextQuoteSelectorクラス、TextPositionSelectorクラス、DataPositionSelectorクラスのケースように、セレクタ(Selector)(またはその他の指定子(Specifier))が解決される必要のある全ての情報がグラフ内に存在するならば、同じ情報を提供する解決可能なリソースを持つ必要はない。しかし、SvgSelectorクラスや独立した1つの形としての表現を持つ他の指定子は、HTTP URI経由のアノテーション(Annotation)から別々にSVGドキュメントを解決可能にするほうがより容易もしくはより効率的かもしれない。
同じ興味のあるセグメントに対して、モデルはいくつかの同等の表現を認めていることは注意しなければならない。例えば、長方形の領域を記述するために、(「コア」ドキュメントのように)FragmentSelector クラスやSvgSelector.クラスのフラグメントURIを直接使用することが可能である。同様に、プレーンテキストドキュメントのために、RFC 5147またはテキストセレクタ(Text Selector)のどちらかを使用することができる。これは、相互運用性の観点から最適ではないが、Open Annotationモデルを柔軟かつ既存の仕様との互換性を維持するためにこれは同時に避けることができなかった。コミュニティがシェアドブリッヂング戦略を実施し、仕様の推奨やベストプラクティスのに可能な限り従うことを推奨する(RECOMMENDED)。
語彙項目 タイプ 説明 oa:Selector Class 個々のセレクタ(Selector)のスーパークラス。このクラスはアノテーション(Annotation)では直接使用されない。そのサブクラスが使用されるのみである。 oa:hasSelector Relationship 特定リソース(Specific Resource)とセレクタ(Selector)との関係。
特定リソース(Specific Resource)と関係づけられた0個もしくは1個のoa:hasSelector関係がなくてはならない(MUST)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:hasSelector <selector1> .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasSelector ?select } => <anno1>
ウェブアーキテクチャは、URIのフラグメント部分を使用して、リソースの特定のセグメントを同定する方法を定義する。これは(XMLやPDFのような)メディアタイプの規定されたフラグメントと、より最近では正確なメディアタイプにかかわらず、画像やビデオのような、リソースの全体のクラスに適応できるメディアフラグメントのために使用される。
Open Annotationモデルは、興味のあるセグメントを記述するために使用される既存と将来のフラグメントの仕様を許容するフラグメントベースのセレクタ(Selector)(oa:FragmentSelector
)を定義する。セグメントの記述はURIのフラグメント識別子コンポーネントの構文であり、rdf:value
プロパティを通してアノテーション(Annotation)グラフに含まれる。フラグメントURIはoa:hasSource
関係のリソースのURIに"#"と値を加え、結びつけることで再構築されているかもしれない。例えば、リソースのURIが http://www.example.com/image.jpg
であり、rdf:value
プロパティが"xywh=1,2,3,4"
であるならば、結果のURIには次のようになりhttp://www.example.com/image.jpg#xywh=1,2,3,4
になるだろう。
コアで述べられているように、直接、フラグメントURIでアノテーション(Annotation)を作成するよりもoa:FragmentSelector
クラスを使用することを推奨する(RECOMMENDED)。消費するアプリケーションは、どちらもしなければならない(MUST)。発行システムは、フラグメントURIを対応するoa:FragmentSelector
クラスの形式に書き換えてもよい(MAY)。
クライアントは dcterms:conformsTo
関係を使用して表現される規格をベースにしたフラグメントセレクタ(FragmentSelector)の値を処理しなければならない(MUST)。それが存在しない場合、クライアントは、フラグメントの意味を決定するために、ソース(Source)リソースのメディアタイプを使用するべきである。これは、フラグメント識別子コンポーネントが、定義によりメディアタイプに依存しているため、フラグメント識別子コンポーネントの誤った解釈を防ぐためである。例えば、HTMLアンカーの一部としてW3C Media Fragmentの仕様に従うフラグメント識別子を構築することが可能である(例えば、#xywh=1,2,3,4
は、このHTMLドキュメントのこのセクションを3から4ピクセルエリアではなく1と2を開始点として参照する)。そのため、クライアントは、フラグメントセレクタ(FragmentSelector)にとって適切な表現が取得されることを確かなものとするために、提供されるどのような 状態(State)
情報も使用しなければならない(MUST)。
語彙項目 タイプ 説明 oa:FragmentSelector Class [oa:Selectorのサブクラス] URIのフラグメント識別子コンポーネントを使用して、表現内に興味のあるセグメントを記述するリソース。 rdf:value Property リソース内の興味のあるセグメント を記述するURIのフラグメント識別子コンポーネントのコンテンツ。
oa:FragmentSelectorは必ず1個のrdf:valueプロパティを持たなくてはならない(MUST)。dcterms:conformsTo Relationship フラグメントセレクタ(Fragment Selector)は、フラグメントのシンタックスを定義した仕様であるオプジェクトと関係づけられた1つのdcterms:conformsTo関係を持つべきである(SHOULD)。
URIはフラグメントの仕様を識別するために使用される。
フラグメントの仕様 説明 http://tools.ietf.org/rfc/rfc3236 XHTML, and HTML. 例: #namedSection http://tools.ietf.org/rfc/rfc3778 PDF. 例: #page=10&viewrect=50,50,640,480 http://tools.ietf.org/rfc/rfc5147 Plain Text. 例: #char=0,10 http://tools.ietf.org/rfc/rfc3023 XML. 例: #xpointer(/a/b/c) http://www.ietf.org/rfc/rfc3870 RDF/XML. 例: #namedResource http://www.w3.org/TR/media-frags/ W3C Media Fragments. 例: #xywh=50,50,640,480 http://www.w3.org/TR/SVG/ SVG. 例: #svgView(viewBox(50,50,640,480))
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSelector <selector1> ; oa:hasSource <source1> . <selector1> a oa:FragmentSelector ; rdf:value "namedSection" .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasSelector ?select . ?select a oa:FragmentSelector . ?select rdf:value "fragment1" } => <anno1>
テキストから文字を抽出したり、データからバイトを抽出するように、線形データでの開始点と終了点を持つセグメントを抽出する方法を記述するいくつかのセレクタがある。レンジセレクタは、線形データのポイントの記述にも使用される。例えば、ウェブページ内に情報を挿入するべき場所を示すカーソルの位置などである。これは、長さ0の選択を与えることによってなされる。
3つのレンジセレクタ(Range Selector)は、2つはテキスト、1つはデータストリームのためのモデルによって定義される。
文字の順序付きリストの任意のサブリストは、ストリームの特定のポイントから開始し、終了点まで前方に読むことで選択することができる。開始は、リスト内のカーソルの位置として考えることができる。位置0は、最初の文字の直前であり、位置1は2番目の文字の直前になるだろう(以下、同様)。従って開始文字は、このリストに含まれているが、最後の文字は、カーソルがその直前に停止したものではない。
例えば、ドキュメントが"abcdefghijklmnopqrstuvwxyz"であったとして、開始が4、終了が7であるならば、選択されたものは、"efg"となるだろう。
テキストは文字をカウントする前に正規化されなければならない(MUST)。従って、例えば、HTML / XMLタグは削除されるべきであり、文字エンティティはエンコードされた文字に置き換えられるべきであり、不必要なホワイトスペースは正規化されるべきである。正規化ルーチンは、ブラウザによって自動的に実行してもよい。そして、他のクライアントはDOM内の文字列比較メソッドを実装するべきである。これによってセレクタ(Selector)を、異なるフォーマットで使用することができ、それでも同じセマンティクスおよびユーテリティを有することができる。レンダリングされた文字ではなく、ビットストリームの作品のためのセレクタ(Selector)は、データ位置セレクタ( Data Position Selector.)を参照すること 。
テキスト引用セレクタ(Text Quote Selector)と異なり、このセレクタ(Selector)の使用はソース(Source)ドキュメントから(Annotation)グラフへテキストがコピーされることを求めない。しかし、リソースへの変更に関して、非常に脆い。編集は、選択したものを変更することがある。したがって、状態(State)が付加的に正しい表現の識別に役立てるために使用されることが推奨される(RECOMMENDED )。
語彙項目 タイプ 説明 oa:TextPositionSelector Class [oa:Selectorのサブクラス]開始位置と終了位置に基づくテキストの範囲を記述するセレクタ(Selector)のクラス。 oa:start Property テキストセグメントの開始位置。全文の最初の文字は、文字位置0であり、文字じゃセグメントに含まれる。
それぞれのTextPositionSelectorクラスは1個のoa:startプロパティを持っていなければならない(MUST)。oa:end Property テキストセグメントの終了位置。最後の文字はセグメント内に含まれない。
各TextPositionSelectorクラスは1つのoa:endプロパティ を持たなくてはならない(MUST)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:hasSelector <selector1> . <selector1> a oa:TextPositionSelector ; oa:start 4 ; oa:end 7 .
SELECT ?anno WHERE { ?anno oa:hasTarget ?spt . ?spt a oa:SpecificResource . ?spt oa:hasSelector ?txt . ?txt a oa:TextPositionSelector . ?txt oa:start ?s ; oa:end ?e . FILTER (?s < 5) . FILTER (?e > 6) } => <anno1>
このセレクタ(Selector)は、コピーすることによるある範囲のテキストを記述する。そして、それはドキュメント内の同じ連続する文字の複合的なコピーの間を区別するためのその直前と直後のある一定の範囲のテキストを含む。接頭辞と接尾辞の長さは、ドキュメントの文脈によって判断すべきである。
例えば、ドキュメントがまた"abcdefghijklmnopqrstuvwxyz"であった場合、接頭辞"abcd"、引用する”efg”、"接尾辞"hijk"によって"efg"を選択することができる。
テキストは、記録前に正規化されなければならない(MUST)。従って、例えば、HTML / XMLタグは削除されるべきであり、文字エンティティはエンコードされた文字に置き換えられるべきであり、不必要なホワイトスペースは正規化されるべきである。正規化ルーチンは、ブラウザによって自動的に実行されてもよいし、その他のクライアントは、DOM内の文字列比較の方法を実装するべきである。これは、セレクタ(Selector)が異なるエンコーディングによって使用されることを認めるものであり、また、同じセマンティクスとユーティリティを有する。
コンテンツが著作権で保護されている場合、テキストを選択するこの方法は危険性を有する可能性がある。ユーザーは、アノテーション(Annotation)を付けるために、ドキュメントのテキスト全体を選択するかもしれないし、それをアノテーション(Annotation)に単純にコピーしてウェブ上に公然と公開するかもしれない。静的なテキストへのアクセス 及び / もしくは 配布の制限には、テキスト位置セレクタ(Text Position Selector)の使用がおそらくより適切である。
語彙項目 タイプ 説明 oa:TextQuoteSelector Class [oa:Selectorのサブクラス]前もしくは後ろにテキストの一節を加えた引用によるテキストセグメントを記述するセレクタ(Selector)のクラス。 oa:exact Property 正規化の後に選択されたテキストのコピー。
各TextQuoteSelectorクラスは1個のoa:exactプロパティを持たなくてはならない(MUST)。oa:prefix Property 選択されたテキストの直前にあるテキストの断片。
各TextQuoteSelectorクラスは1個の oa:prefixプロパティをもつべきであり(SHOULD)、2個以上もってならない(MUST NOT)。oa:suffix Property 選択されたテキストの直後にあるテキストの断片。
各TextQuoteSelectorクラスは1個のoa:suffixプロパティをもつべきであり(SHOULD)、2個以上もってならない(MUST NOT)。
<anno1> a oa:Annotation ; oa:hasBody <body1> . oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:hasSelector <selector1> . <selector1> a oa:TextQuoteSelector ; oa:exact "efg" ; oa:prefix "abcd" ; oa:suffix "hij" .
SELECT ?anno WHERE { ?anno oa:hasTarget ?spt . ?spt a oa:Specific Resource . ?spt oa:hasSelector ?txt . ?txt a oa:TextQuoteSelector . ?txt oa:exact "efg" } => <anno1>
テキスト位置セレクタ(Text Position Selector)に非常に似ており、データ位置セレクタ(Data Position Selector)は、同じプロパティを使用するが、テキストレベルの文字ではなく、ビットストリームレベルでのバイトで機能する。例えば、法医学的目的のためのディスクイメージのセグメントやセンサーによって記録されたデータのストリームの一部にアノテーション(Annotation)をつけるために有用である。
語彙項目 タイプ 説明 oa:DataPositionSelector Class [oa:Selectorのサブクラス)]バイトストリーム内での開始位置と終了位置に基づいたデータの範囲を記述したセレクタ(Selector)のクラス。 oa:start Property データのセグメントの開始位置。最初のバイトは文字位置0である。
各DataPositionSelectorクラスは1個のoa:startプロパティを持たなくてはならない(MUST)。oa:end Property データのセグメントの終了位置。最後の文字はセグメント内に含まれない。
各DataPositionSelectorは1個のoa:end プロパティを持つべきである(MUST)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:hasSelector <selector1> . <selector1> a oa:DataPositionSelector ; oa:start 4096 ; oa:end 4104 .
SELECT ?anno WHERE { ?anno oa:hasTarget ?spt . ?spt a oa:SpecificResource . ?spt oa:hasSelector ?data . ?data a oa:DataPositionSelector . ?data oa:start ?s ; oa:end ?e . FILTER (?s < 4100) . FILTER (?e > 4100) } => <anno1>
単純な長方形領域は、メディアフラグメントセレクタ(Selector)を使用して記述することができるが、円形領域、楕円領域、任意多角形領域で記述することができることもしばしば有用である。
SvgSelectorはScalable Vector Graphicsの規格の使用によって領域を定義する。セレクタ(Selector)のコンテンツは、有効なSVGドキュメントである。ドキュメントには、形状要素が1つのみ含まれていることを推奨する(RECOMMENDED)。その要素はpath, rect, circle, ellipse, polyline, polygon
もしくはg
のいずれかの1つであるべきである。g要素は、例えば、外側の円とクリップされた内部の円を要求するドーナツ形状を定義するためのような、複数の要素のグループの構築のためだけに使用されるべきである(SHOULD)。
形状とSVGキャンバスの両方の縦横のサイズは、ソース(Source)リソースのそれと比例したものでなければならない(MUST)。例えば、400ピクセル×600ピクセルの画像ならば、、目的のセクションは、画像の中心にある半径が100ピクセルのサークルである。そして、画像の中央に100ピクセル半径の円である場合、SVG要素は<circle cx="300" cy="200" r="100"/>
になるだろう。
SVG要素内、もしくはJavaScript、アニメーション、テキストやその他の非形状指向の情報にスタイル情報を含めることは推奨されない(NOT RECOMMENDED)。存在する場合、クライアントはそのような情報は無視するべきである(SHOULD)。
このモジュールのみを使用して、別個のリソースとしてSVGドキュメントを有することが必要である。例えば以下の図あるようにに、「selector1」という名付けられたリソースが実際にURI "http://www.example.com/selections/2341.svg」を持っているかもしれない。このURIはデリファレンスされた時にSVGドキュメントを返すだろう。アノテーション(Annotation)内に SvgSelectorクラスのリソースを埋め込む方法については 「リソースの埋め込み」を参照すること。
語彙項目 タイプ 説明 oa:SvgSelector Class [oa:Selectorのサブクラス] SVGの仕様を使用して形状を定義するセレクタ(Selector)のクラス。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSelector <selector1> ; oa:hasSource <source1> . <selector1> a oa:SvgSelector .
SELECT ?anno WHERE { ?anno oa:hasTarget ?spt . ?spt a oa:SpecificResource . ?spt oa:hasSelector ?svg . ?svg a oa:SvgSelector } => <anno1>
状態指定子(State Specifier)は、特定のアノテーション(Annotation)に適応される本体(Body)もしくはターゲット(Target)リソースの意図された状態を記述し、消費するクライアントにそのリソースの正しい表現を取得するために必要な情報を提供する。ウェブリソースが時間とともに変化するために、ソース(Source)リソースのアーカイブされたコピーへのリンクもしくは適切なアーカイブされた表現を発見することを助けるためにアノテーション(Annotation)が用いるタイムスタンプを含むかもしれない。リソースは、さまざまな形式の複数の表現をもつかもしれない。そして、アノテーション(Annotation)はそのうちの1つのみに適応するかもしれない。したがって、状態(State)はソース(Source)から直接正しいフォーマットで表現を取得する方法を記述することができる。他のファセットは、取得された表現がアノテーション(Annotation)が作成されたものと同等であるかどうか、リソースが検索するために認証を求めるかどうか、ウェブサーバーに送付するユーザーエージェントの文字列などを決定するために不変性もしくはチェックサム情報を含む。
消費するクライアントは、与えられたセレクタ(Selector)やスタイル情報を処理する前に供給された状態(State)を処理しなければならない(Must)。
語彙項目 タイプ 説明 oa:State Class アノテーション(Annotation)に適したソースリソースの表現を取得する方法について説明したリソース。このクラスはアノテーション(Annotation)で直接使用されない。このクラスのサブクラスだけが使用される。 oa:hasState Relationship oa:SpecificResourceクラスのリソース とoa:Stateクラスリソースとの関係。
0個もしくは1個のoa:hasState関係が各SpecificResourceにあってもよい(MAY)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasState <state1> ; oa:hasSource <source1> .
SELECT ?anno WHERE { ?anno oa:hasBody ?body . ?body a oa:SpecificResource . ?body oa:hasState ?state } => <anno1>
時間状態(Time State)指定子は、リソースがアノテーション(Annotation)にとって適切な時間、一般的にはアノテーション(Annotation)が作成された時間を記録する。例えば、Mementoプロトコルを使用するように、消費するアプリケーションはその時間からリソースの適切な表現を発見するために情報を使用することができる。この状態(State)は適切なキャッシュもしくはその時間のリソースの表現のアーカイブされたコピーへの直接リンクも持つことがあるかもしれない。
語彙項目 タイプ 説明 oa:TimeState Class アノテーション(Annotation)に時間的に適切であるソース(Source)リソースの表現を取得する方法を記述したリソース。 oa:when Property ソースリソースがアノテーション(Annotation)のために解釈されるべきでタイムスタンプ。タイムスタンプはxsd:dateTime形式で表現されなければならない(MUST)。指定されたタイムゾーンを持つべきである(SHOULD)。
1個のTimeStateクラスごとにoa:whenプロパティが0個以降あってもよい(MAY)。しかし、少なくともoa:whenプロパティとoa:cachedSource関係のうち少なくとも1個はなければならない(MUST)。.1個以上ある場合は、それぞれに代替のタイムスタンプを付与する。ソース(Source)がそのタイムスタンプによって判断されるかもしれない。oa:cachedSource Relationship アノテーション(Annotation)に適切なソース(Source)リソースの表現のコピーへのリンク。
1個のTimeStateクラスごとに0個以上 oa:cachedSource関係があってもよい(MAY)。、少なくともoa:cachedSource関係とoa:whenプロパティのうち少なくとも1つはなければならない(MUST)。1個以上ある場合は、それぞれに表現の代替となるコピーをつける。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasState <state1> ; oa:hasSource <source1> . <state1> a oa:TimeState ; oa:cachedSource <copy1> ; oa:when "2012-07-20T13:30:00Z" .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasState ?state . ?state a oa:TimeState . ?state oa:cachedSource ?copy } => <anno1>
単一のURIを持つリソースから送信されることがありうる多くの表現が存在することがありえるため、正しい表現を取得するために送信される必要があるHTTPリクエストヘッダを記録できることが重要である。HttpRequestStateクラスのリソースは、表現を取得したときに再現するためのヘッダのコピーを保持する。
語彙項目 タイプ 説明 oa:HttpRequestState Class サーバーに送付するためのHTTPリクエストヘッダをもとにアノテーション(Annotation)のためのソース(Source)リソースの適切な表現を取得する方法を記述したリソース。 rdf:value Property まさにHTTPリクエスで出てくる単一かつ、完全な文字列のHTTPリクエスヘッダ。
1個のHTTPRequestStateクラスごとに1個のrdf:valueプロパティがなくてはならない(MUST)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasState <state1> ; oa:hasSource <source1> . <state1> a oa:HttpRequestState ; rdf:value "Accept: text/plain" .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasState ?state . ?state a oa:HttpRequestState ; rdf:value ?headers } => <anno1>
特定のアノテーション(Annotation)の解釈は、クライアント間の一貫性したスタイルのレンダリングに依存するかもしれない。例えば、本体(Body)が黄色にハイライトされたイメージの一部を、赤くハイライトされた箇所と比較しながら参照する場合、これらの色は維持される必要がある。同様に、アノテーション(Annotation)を作成する者は、おそらく自分自身だけにスタイリングを通して情報を伝達するかもしれない。システム間でこの黙示的な情報が失われることがないように、スタイリングは、一貫して表現する必要がある。例えば、アノテーション(Annotation)を作成する者は、緑のハイライトが戻って参照されることを意図したものであることを知っているかも知れないし、それらが赤くハイライトされたセクションと一致しないことを知っているかもしれない。
スタイル(Style)リソースは、アノテーション(Annotation)そのものに関係づけられている。リソースのコンテンツは、アノテーション(Annotation)の構成要素リソースに関するレンダリングのヒントを提供する。スタイル(Style)は、処理のためにアノテーション(Annotation)グラフに追加されるための追加情報を必要とするかもしれない。アノテーション(Annotation)に関係づけられていなければならない複数のスタイル(Style)リソースがある場合は、多重構造物の使用が推奨される(RECOMMENDED)。
消費するアプリケーションは、これらの命令を処理してもよい(MAY)。発行システムは、それらが処理されることを前提としてはならない(MUST NOT)。それらは、要件としてではなく、ヒントとしてのみ提供されています。クライアントがスタイルを理解できなかったり、スタイルに作用することができない場合は、クライアントはかまわず選択したものやリソースのレンダリングを続けてもよい(MAY)。
語彙項目 タイプ 説明 oa:Style Class 選択もしくはリソースがレンダリングされるべきスタイルを記述するリソース。このクラスはアノテーション(Annotation)で直接使用されていない。このクラスのサブクラスだけが使用される。 oa:styledBy Relationship アノテーション(Annotation)とoa:Styleクラスの関係。
各アノテーション(Annotation)ごとに0個もしくは1個のstyledBy関係があってもよい(MAY)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <target1> ; oa:styledBy <style1> .
SELECT ?anno WHERE { ?anno oa:styledBy ?style } => <anno1>
ウェブのための標準的なスタイル言語はW3CのCascading Style Sheets(CSS)である。これは、HTMLやXMLの構造化ドキュメントのプレゼンテーションレイヤーとコンテンツレイヤーの分離を促進するものである。
CSS はOpen Annotationモデルでは、oa:Styleクラスのサブクラスであるoa:CssStyleクラスを通して使用される。それはクラスセレクタの共通のアプローチを使用し、クラスラベルはoa:styleClass
プロパティを使用した特定リソース(Specific Resource)に付属される。このクラスラベルは、ソース(Source)リソースがそのクラスを持っていることが普遍的真実というわけではないため、特定リソース(Specific Resource)に付属されるのみでなければならない。
CSSのリソース内の各ブロックは、以下のような形式になっている。
.classname { css-value }したがって、クラス "red"を持つ特定リソース(Specific Resource) に赤色を関係付けるには、CSSで以下のようにする。
.red { color: red }そして、スタイル付けされた 特定リソース(Specific Resource) (spres1) は、アノテーション(Annotation)のRDFで以下のようなプロパティを持つだろう。
<spres1> oa:styleClass "red" .
特定リソース(Specific Resource),をレンダリングする際に、消費するアプリケーションは、oa:styleClass
プロパティを持っているかどうかの確認をするべきである(SHOULD)。それがある場合、アプリケーションはCSSドキュメント内に適切なセレクタ(Selector)を設置するよう試みるべきである(SHOULD)。そして、css-valueブロックを採用するべきである(SHOULD)。特定リソース(Specific Resource)がoa:styleClassプロパティを持っており、しかし、そのようなクラスが、アノテーション(Annotation)に付加されたoa:CssStyle
クラスによって記述されないのであるならば、oa:styleClass
は静かに無視されなければならない(MUST)
CSSリソースは、情報を提供するための独自のをデリファレンス可能なURIを持ってもよい(MAY)。例えば、下の図の "Style1" は実際には、"http://www.example.com/styles/annotations.css"というURIを持っているかもしれない。「リソースの埋め込み」で記述したインラインの構造物を使用してアノテーション(Annotation)内に埋め込んでもよい(MAY)。
特定本体(Specific Body) やターゲット(Target)の正確なレンダリングが最終的にはユーザーのクライアント次第であるということは何度繰り返し言ってもよいくらいである。これは、全ての消費するクライアントがCSSパーサを含んでいるわけではないということ、従って、それらはスタイリング情報を処理することができないと理解されている。たとえスタイル情報をパースできるとはいえ、実装はより困難になるかもしれないにが、Open Annotation におけるこのスタイル(Style)の使用は、非HTMLベースのクライアントを除外するものではない。このようなクライアントはCSSスタイル(CSS Style)リソース内で提供されるスタイリングのヒントの全て、もしくはその一部でさえ処理は行わないに違いない。
語彙項目 タイプ 説明 oa:CssStyle Class [oa:Styleのサブクラス] CSSを使用したアノテーション(Annotation)に関与するリソースのためのスタイルを記述したリソース。 oa:styleClass Property CSSの記述に使用される特定リソース(Specific Resource)に適用されるべきクラスの文字列の名前。
1個の特定リソース(Specific Resource)に0個以上のoa:styleClassプロパティがあってもよい(MAY)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> ; oa:styledBy <style1> . <style1> a oa:CssStyle . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:styleClass "red" .
SELECT ?anno WHERE { ?anno oa:styledBy ?style . ?style a oa:CssStyle . ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:styleClass ?styleclass } => <anno1>
アノテーション(Annotation)の作成者がその時見た、もしくは使用したリソースという点から、アノテーション(Annotation)が作成されたコンテキストをアノテーション(Annotation)に記録することが時々重要になる。例えば、特定の画像に対するアノテーションが他のウェブページではなく、あるウェブページのコンテキストの中で作成されたことを知っておくことは重要かも知れない。これはアノテーションがそのページのコンテキストにおける画像に対してのみ有効であるという主張を暗示しているわけではない。そのウェブページが閲覧されていたということを記録しただけである。これはまた、特定のコレクションのコンテキストでリソースにアノテーション(Annotation)を付けることにも有用かもしれない。
このようなスコープ情報は、特定のアノテーション(Annotation)に対してのみ真であるため、ソース(Source)に対して直接ではなく、特定リソース(Specific Resource)に対して付加されなければならない。一方でソース(Source)を参照する他のアノテーション(Annotation)が誤ってこのアサーションを継承したためセレクタ(Selector)もしくは状態(State)がなくてもこれは真である。oa:hasScope
関係のオブジェクトは、何らかの形でスコープするか、このアノテーション(Annotation)内のリソースにコンテキストを提供するリソースである。例えば、以下の図にあるように、"scope1"と名付けられたリソースは"http://www.example.com/index.html"というウェブページであることがありえる。ソース(Source)リソース"source1"は"http://www.example.com/images/logo.jpg",という画像であることがありえる。その場合、本体(Body)はそのページにないコメントである。
語彙項目 タイプ 説明 oa:hasScope Relationship 特定リソース(Specific Resource)と、このアノテーション(Annotation)でのスコープもしくはコンテキストを提供するリソースの関係。
各 特定リソース(Specific Resource)に0個以上のoa:hasScope関係があってもよい(MAY)。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasScope <scope1> ; oa:hasSource <source1> .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasScope <Scope1> } => <anno1>