【注意】 このドキュメントは、W3CのWeb Annotation Vocabulary W3C Recommendation 23 February 2017の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
訳注: Annotation、Target等、頭文字が大文字になっている語句が本文中に多く出現しますが、それらは大文字・小文字を区別せずに訳しました。
First Update: 2017年3月14日
公開以後に報告されたエラーや問題がないか正誤表を確認してください。
このドキュメントは、規範以外の形式でも入手できます: ePub
この仕様の英語版が唯一の規範のバージョンです。非規範の翻訳版も入手可能かもしれません。
Copyright © 2017 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
ウェブ・アノテーション語彙は、ウェブ・アノテーション・データ・モデル[annotation-model]で用いられるRDFクラス、述語、および名前付きエンティティーの集合を規定します。また、モデルで用いられるその他のオントロジーの推奨用語も掲載しており、リンクト・データのコンテキストでウェブ・アノテーションJSONシリアル化を用いるために必要なJSON-LDコンテキストとプロファイル定義を提供します。
この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。
この勧告の公開により、W3Cは、この勧告で規定している機能は、アクティビティ・ストリームズ2.0[activitystreams-core]およびアクティビティ語彙[activitystreams-vocabulary]の仕様が勧告に進んだ際に、その変更によって影響を受けることはないと予想しています。
このドキュメントは、ウェブ・アノテーション・ワーキンググループによって勧告として公開されました。このドキュメントに関してコメントを行いたい場合には、public-annotation@w3.org(購読、アーカイブ)にお送りください。どのようなコメントでも歓迎します。
ワーキンググループの実装報告書を参照してください。
このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用したりすることができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。
このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。
このドキュメントは、2015年9月1日のW3Cプロセス・ドキュメントによって管理されています。
この項は非規範的です。
この仕様は、ウェブ・アノテーション・オントロジーで定義されている用語と、モデルで用いられるその他のオントロジーの用語という2つの主な部分に分けられます。
個々のクラスには、モデルから抽出した、必須(REQUIRED)、推奨(RECOMMENDED)、オプション(OPTIONAL)のオブジェクトとクラスのインスタンスに対するデータ・プロパティーの推奨を掲載しています。もちろん、インスタンスは実装者が有用だと思う他のトリプルの主語にもなりえますが、その場合には相互運用性は見込めません。
| 接頭辞 | 名前空間 | 説明 |
|---|---|---|
| oa | http://www.w3.org/ns/oa# | ウェブ・アノテーション・データ・モデル |
| as | http://www.w3.org/ns/activitystreams# | [activitystreams-vocabulary] |
| dc | http://purl.org/dc/elements/1.1/ | [DC11] |
| dcterms | http://purl.org/dc/terms/ | [DC-TERMS] |
| dctypes | http://purl.org/dc/dcmitype/ | [DC-TERMS] |
| foaf | http://xmlns.com/foaf/0.1/ | [FOAF] |
| rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# | [rdf-schema] |
| rdfs | http://www.w3.org/2000/01/rdf-schema# | [rdf-schema] |
| schema | http://schema.org/ | schema.org |
| skos | http://www.w3.org/2004/02/skos/core# | [skos-reference] |
| xsd | http://www.w3.org/2001/XMLSchema# | [xmlschema-2] |
ドキュメント内のすべての例は、付録Aで示されている名前空間宣言から得た接頭辞を持つ[Turtle]としてシリアル化されます。例は参考情報でしかありません。
図には、次のスタイルを用いています。
Annotationはクラスですが、anno1はアノテーションの特定のインスタンスです。非規範的と記している項と同じく、この仕様のすべての作成ガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。
「することができる/してもよい(MAY)」、「しなければならない(MUST)」、「してはならない(MUST NOT)」、「選択できる/任意である(OPTIONAL)」、「推奨される(RECOMMENDED)」、「必須である/要求される(REQUIRED)」、「すべきである/する必要がある(SHOULD)」というキーワードは、[RFC2119]で記述されているように解釈されるべきです。
http://www.w3.org/ns/oa#です。
ウェブ・アノテーションに対するクラス。

<http://example.org/anno1> a oa:Annotation ; oa:hasBody <http://example.org/post1> ; oa:hasTarget <http://example.com/page1> ; oa:motivatedBy oa:commenting ; dcterms:creator <http://example.org/person1> ; dcterms:created "2015-11-18T12:00:00Z" .
利用アプリケーションに対し、利用する際には、すべての資源ではなく、as:itemsのリスト内の資源を1つ選択すべきであることを伝えるas:OrderedCollectionのサブクラス。これは一般的に、追加で提供されるプロパティーに基づいて、ユーザに表示する資源の選択肢を示すために用います。利用アプリケーションがユーザのプレファレンスを判断できない場合は、リストの最初のものを用いるべきです。
<http://example.org/anno2> a oa:Annotation ; oa:hasTarget <http://example.org/site1> ; oa:hasBody [ a oa:Choice ; as:items (<http://example.org/note1> <http://example.org/note2>) ] . <http://example.org/note1> dc:language "en" . <http://example.org/note2> dc:language "fr" .
CssSelectorは、CSSセレクタ仕様を用いてドキュメント・オブジェクト・モデルに準拠した表現の関心のある断片を記述します。

<http://example.org/anno3> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:CssSelector ; rdf:value "#elemid > .elemclass + p" ] ] .
CSSを用いてアノテーションに関与している資源のスタイルを記述する資源。

<http://example.org/anno4> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:styledBy <http://example.org/style1> ; oa:hasTarget [ oa:hasSource <http://example.org/document1> ; oa:styleClass "red" ] . <http://example.org/style1> a oa:CssStyle .
DataPositionSelectorは、ストリーム内の選択の開始・終了位置を記録することによりデータの範囲を記述します。0という位置は最初のバイトの直前であり、1という位置は2番目のバイトの直前であるなどです。したがって、開始バイトはリストに含まれていますが、終了のバイトは含まれていません。

<http://example.org/anno5> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/diskimg1> ; oa:hasSelector [ a oa:DataPositionSelector ; oa:start 4096 ; oa:end 4104 ] ] .
テキスト資源が取ることができる様々なテキストの方向性をカプセル化するクラス。これは、アノテーション・モデルでは直接用いず、3つのインスタンスのみを用います。
<http://example.org/anno6> a oa:Annotation ; oa:hasBody [ rdf:value "This is a comment" ; dc:language "en" ; dc:format "text/plain" ; oa:textDirection oa:ltr ] ; oa:hasTarget <http://example.org/page1> .
FragmentSelectorクラスは、表現のメディア・タイプで定義されているIRIフラグメント仕様を用いて表現の断片を記録するために用います。
<http://example.org/anno7> a oa:Annotation ; oa:hasBody <http://example.org/image1> ; oa:hasTarget [ oa:hasSource <http://example.org/video1> ; oa:hasSelector [ a oa:FragmentSelector ; dcterms:conformsTo <http://www.w3.org/TR/media-frags/> ; rdf:value "t=30,60" ] ] .
HttpRequestStateクラスは、クライアントが資源から正しい表現をリクエストするために用いるべき(SHOULD)HTTPリクエスト・ヘッダーを記録するために用います。
<http://example.org/anno8> a oa:Annotation ; oa:hasBody <http://example.org/description1> ; oa:hasTarget [ oa:hasSource <http://example.org/target1> ; oa:hasState [ a oa:HttpRequestState ; rdf:value "Accept: application/pdf" ] ] .
動機クラスは、関連付けられているアノテーションを作成した、または本体やターゲットを含めたユーザの意図または動機を記録するために用います。
<http://example.org/anno9> a oa:Annotation ; oa:hasBody <http://example.org/description1> ; oa:hasTarget <http://example.com/resource1> ; oa:motivatedBy oa:describing .
RangeSelectorは、他のセレクタを用いて選択の最初と最後を識別するために使用できます。選択は、開始セレクタの最初から終了セレクタの最初(しかし、これは含まない)に至るまでのすべてで構成されます。
<http://example.org/anno10> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:RangeSelector ; oa:hasStartSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[2]" ] ; oa:hasEndSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[4]" ] ] ] .
ResourceSelectionクラスのインスタンスは、別の資源(oa:hasSourceで参照される)の一部(oa:Selectorで記述される)を識別し、それは資源(oa:Stateで記述される)の特定の表現のものである可能性があります。ウェブ・アノテーション・モデルではResourceSelectionは直接用いられませんが、多くのアノテーション固有の機能を持っているoa:SpecificResourceとは別に、さらなるアプリケーション・プロファイルで用いるために、別のクラスとして提供されることに注意してください。
情報源資源の表現内の関心のある断片を記述する資源で、特定資源のoa:hasSelectorで示されます。このクラスはアノテーション・モデルでは直接用いられず、そのサブクラスのみが用いられます。
SpecificResourceクラスのインスタンスは、別の資源(oa:hasSourceで参照される)の一部、資源の特定の表現、表示用のスタイル指定のヒントを持つ資源、またはこれらの何らかの組み合わせをアノテーション内で用いて識別します。
<http://example.org/anno11> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget <http://example.org/region1> . <http://example.org/region1> a oa:SpecificResource ; oa:hasSource <http://example.org/image1> .
状態は、特定のアノテーションに適用される資源の意図する状態を記述し、したがって、その資源の正しい表現を得るために必要な情報を提供します。
スタイルは、特定のアノテーションに適用される資源の意図するスタイルを記述し、したがって、実装の全体で表示が統一されていることを保証する情報を提供します。
SvgSelectorは、SVG(Scalable Vector Graphics)[SVG]標準を用いて領域を定義します。これにより、ユーザは、SVGで領域を記述することにより、円や多角形などの、矩形ではないコンテンツ領域を選択できるようになります。SVGは、アノテーション内に組み込むか、外部資源として参照することができます。
<http://example.org/anno12> a oa:Annotation ; oa:hasBody <http://example.org/road1> ; oa:hasTarget [ oa:hasSource <http://example.org/map1> ; oa:hasSelector [ a oa:SvgSelector ; rdf:value "<svg:svg> ... </svg:svg>" ] ] .
TextPositionSelectorは、連続するデータ内の選択の開始・終了位置を記録することでテキストの範囲を記述します。0という位置は最初の文字の直前であり、1という位置は2番目の文字の直前であるなどです。
<http://example.org/anno13> a oa:Annotation ; oa:hasBody <http://example.org/review1> ; oa:hasTarget [ oa:hasSource <http://example.org/ebook1> ; oa:hasSelector [ a oa:TextPositionSelector ; oa:start 412 ; oa:end 795 ] ] .
TextQuoteSelectorは、コピーすることによってある範囲のテキストを記述し、その直前(接頭辞)・直後(接尾辞)のテキストの一部を含めることで、同じ文字列の複数のコピーを区別します。
<http://example.org/anno14> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:TextQuoteSelector ; oa:exact "anotation" ; oa:prefix "this is an " ; oa:suffix " that has some" ] ] .
<http://example.org/anno15> a oa:Annotation ; oa:hasTarget <http://example.org/photo1> ; oa:hasBody [ a oa:TextualBody; rdf:value "<p>Comment text</p>" ; dc:language "en" ; dc:format "text/html" ] .
TimeStateは、資源の状態がアノテーションに適している時間を記録するもので、一般的には、アノテーションが作成された時間および/または現在のバージョンの永続的なコピーへのリンクです。
<http://example.org/anno16> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasState [ a oa:TimeState ; oa:cachedSource <http://example.org/copy1> ; oa:sourceDate "2015-07-20T13:30:00Z" ] ] .
XPathSelectorは、指定されたXPathの値を用いてドキュメント・オブジェクト・モデルをサポートする資源内の要素とコンテンツを選択するために用います。
<http://example.org/anno17> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:XPathSelector ; rdf:value "/html/body/p[2]/table/tr[2]/td[3]/span" ] ] .
この関係の目的語は、[annotation-protocol]に従ったサービスのエンドポイントであり、任意の資源に関連付けることができます。関係の言明で予期されるのは、関係の公開者によれば、その目的語が主語資源に関するアノテーションを維持するための望ましいサービスであるということです。
この関係は、リンクト・データの記述とリンクのrelタイプ(バイナリ資源とHTTP Link要素の場合のHTTPリンク・ヘッダー[rfc5988]を用いて)の両方で用いることを意図しています。これらの詳細については、アノテーション・プロトコル仕様[annotation-protocol]を参照してください。
<http://example.org/diagram.jpg> a dctypes:Image ; oa:annotationService <http://example.org/services/annotations/> .
述語の目的語は、アノテーションの本体のコンテンツとして用いられるプレーン・テキストの文字列です。値はxsd:stringでなけばならず(MUST)、そのデータ型はシリアル化で表現してはなりません(MUST NOT)。言語は、rdf:langStringでのみ使用できるため、言語タグとして値と関連付けられてはならない(MUST NOT)ことに注意してください。
<http://example.org/anno18> a oa:Annotation ; oa:bodyValue "Comment text" ; oa:hasTarget <http://example.org/target1> .
関係の目的語は、アノテーションに適した、情報源資源の表現のコピーです。
<http://example.org/anno19> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasState [ a oa:TimeState ; oa:cachedSource <http://example.org/copy1> ; oa:sourceDate "2015-07-20T13:30:00Z" ] ] .
関係の目的語は、表現にアクセスするために用いられている現在のIRIに関わらず、アノテーションの重複排除に常に使用できる正規のIRIです。
<http://example.org/anno20> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget <http://example.org/page1> ; oa:canonical <urn:uuid:dbfb1861-0ecf-41ad-be94-a584e5c4f1df> .
終了プロパティーは、コンテンツの範囲の終了位置の0オリジン(0-based)のインデックスを伝えるために用いられます。
<http://example.org/anno21> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/diskimg1> ; oa:hasSelector [ a oa:DataPositionSelector ; oa:start 4096 ; oa:end 4104 ] ] .
この述語の目的語は、選択されているテキスト(正規化後)のコピーです。
<http://example.org/anno22> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:TextQuoteSelector ; oa:exact "anotation" ; oa:prefix "this is an " ; oa:suffix " that has some" ] ] .
この関係の目的語は、アノテーションの本体である資源です。
<http://example.org/anno23> a oa:Annotation ; oa:hasBody <http://example.org/post1> ; oa:hasTarget <http://example.com/page1> .
RangeSelectorと範囲の終了位置を記述しているセレクタとの関係。
<http://example.org/anno24> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:RangeSelector ; oa:hasStartSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[2]" ] ; oa:hasEndSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[4]" ] ] ] .
アノテーションの資源によって提供される目的。
<http://example.org/anno25> a oa:Annotation ; oa:motivatedBy oa:bookmarking ; oa:hasBody [ a oa:TextualBody ; rdf:value "readme" ; oa:hasPurpose oa:tagging ] ; oa:hasTarget <http://example.org/page1> .
アノテーションで資源が用いられる範囲またはコンテキスト。
<http://example.org/anno26> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ oa:hasSource <http://example.org/logo1.jpg> ; oa:hasScope <http://example.org/index.html> ] .
関係の目的語は、情報源資源内の関心のある断片または領域を記述するセレクタです。ウェブ・アノテーション・モデルでは定義域(oa:ResourceSelection)が直接用いられないことに注意してください。
<http://example.org/anno27> a oa:Annotation ; oa:hasBody [ oa:hasSource <http://example.org/page1> ; oa:hasSelector <http://example.org/paraselector1> ] ; oa:hasTarget [ oa:hasSource <http://example.com/dataset1> ; oa:hasSelector <http://example.org/dataselector1> ] .
ResourceSelection(またはそのサブクラスのSpecificResource)が精緻化された形式またはより特定的である資源。ウェブ・アノテーション・モデルでは定義域(oa:ResourceSelection)が直接用いられないことに注意してください。
<http://example.org/anno28> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget <http://example.org/region1> . <http://example.org/region1> a oa:SpecificResource ; oa:hasSource <http://example.org/image1> .
RangeSelectorと範囲の開始位置を記述しているセレクタとの関係。
<http://example.org/anno29> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:RangeSelector ; oa:hasStartSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[2]" ] ; oa:hasEndSelector [ a oa:XPathSelector ; rdf:value "//table[1]/tr[1]/td[4]" ] ] ] .
ResourceSelection(またはそのサブクラスのSpecificResource)と状態資源との関係。ウェブ・アノテーション・モデルでは定義域(oa:ResourceSelection)が直接用いられないことに注意してください。
<http://example.org/anno30> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasState <http://example.org/state1> ; oa:hasSource <http://example.org/page1> ] .
アノテーションとそのターゲットとの関係。
<http://example.org/anno31> a oa:Annotation ; oa:hasBody <http://example.org/post1> ; oa:hasTarget <http://example.com/page1> .
アノテーションとアノテーションの作成理由を記述している動機との関係。
<http://example.org/anno32> a oa:Annotation ; oa:hasBody <http://example.org/description1> ; oa:hasTarget <http://example.com/resource1> ; oa:motivatedBy oa:describing .
このプロパティーの目的語は、セレクタによって選択されているコンテンツの直前にあるコンテンツの断片です。
<http://example.org/anno33> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:TextQuoteSelector ; oa:exact "anotation" ; oa:prefix "this is an " ; oa:suffix " that has some" ] ] .
プロパティーの目的語は、ハイフネーション、改行、表示に使用するフォントなどを含む、資源のコンテンツを扱う時にテキスト処理アルゴリズムに用いるべき言語です。値は[BCP47]の勧告に従わなければなりません。
<http://example.org/anno34> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "<p>?????? ???????, W3C</p>" ; dc:format "text/html" ; dc:language "en", "he" ; oa:processingLanguage "he" ] ; oa:hasTarget <http://example.org/page1> .
情報源資源の処理を精緻化するために最初の結果に適用すべき、セレクタと別のセレクタ、または状態とセレクタまたは状態との関係。
<http://example.org/anno35> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ a oa:SpecificResource ; oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:FragmentSelector ; rdf:value "para5" ; oa:refinedBy [ a oa:TextQuoteSelector ; oa:exact "selected text" ; oa:prefix "text before the " ; oa:suffix "and text after it" ] ] ] .
資源を表示するためにアノテーションを作成したアプリケーションが用いたシステム。
<http://example.org/anno36> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ a oa:SpecificResource ; oa:hasSource <http://example.org/page1> ; oa:renderedVia [ a as:Application ; schema:softwareVersion "2.5" ] ] .
情報源資源がアノテーションに適用可能であると解釈されるべきタイム・スタンプ。
<http://example.org/anno37> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasState [ a oa:TimeState ; oa:sourceDate "2015-07-20T13:30:00Z" ] ] .
情報源資源がアノテーションに適用可能であると解釈されるべきインタバルの終了のタイム・スタンプ。
<http://example.org/anno38> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasState [ a oa:TimeState ; oa:sourceDateStart "2015-07-20T13:30:00Z" ; oa:sourceDateEnd "2015-07-21T19:45:00Z" ] ] .
情報源資源がアノテーションに適用可能であると解釈されるべきインタバルの開始のタイム・スタンプ。
<http://example.org/anno39> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasState [ a oa:TimeState ; oa:sourceDateStart "2015-07-20T13:30:00Z" ; oa:sourceDateEnd "2015-07-21T19:45:00Z" ] ] .
コンテンツの範囲が情報源資源のデータから選択される0オリジン(0-based)のインデックスの開始位置。
<http://example.org/anno40> a oa:Annotation ; oa:hasBody <http://example.org/review1> ; oa:hasTarget [ oa:hasSource <http://example.org/ebook1> ; oa:hasSelector [ a oa:TextPositionSelector ; oa:start 412 ; oa:end 795 ] ] .
特定資源に適用すべきアノテーションから参照されるCSS記述に用いられるクラス名。
<http://example.org/anno41> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:styledBy <http://example.org/style1> ; oa:hasTarget [ oa:hasSource <http://example.org/document1> ; oa:styleClass "red" ] . <http://example.org/style1> a oa:CssStyle .
アノテーションの表示にスタイルを適用するために用いるべきスタイルシートへの参照。
<http://example.org/anno42> a oa:Annotation ; oa:hasBody <http://example.org/body1> ; oa:styledBy [ a oa:CssStyle ; rdf:value ".red { color: red }" ] ; oa:hasTarget [ oa:hasSource <http://example.org/target1> ; oa:styleClass "red" ] .
選択されているテキストの直後にあるテキストの断片。
<http://example.org/anno43> a oa:Annotation ; oa:hasBody <http://example.org/comment1> ; oa:hasTarget [ oa:hasSource <http://example.org/page1> ; oa:hasSelector [ a oa:TextQuoteSelector ; oa:exact "anotation" ; oa:prefix "this is an " ; oa:suffix " that has some" ] ] .
主語資源のテキストの方向。任意の資源と関連付けられたテキスト方向が1つだけなければなりません(MUST)。
<http://example.org/anno44> a oa:Annotation ; oa:hasBody [ rdf:value "This is a comment" ; dc:language "en" ; dc:format "text/plain" ; oa:textDirection oa:ltr ] ; oa:hasTarget <http://example.org/page1> .
関係の目的語は、提供しているシステムによって情報源資源が取得された資源です。
<http://example.org/anno45> a oa:Annotation ; oa:hasBody <http://example.org/note1> ; oa:hasTarget <http://example.org/page1> ; oa:via <http://other.example.com/anno1b> .
ユーザが、ターゲット資源に関して評価しようとする時の動機。
<http://example.org/anno46> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "Very high quality" ] ; oa:hasTarget <http://example.com/resource1> ; oa:motivatedBy oa:assessing .
ユーザが、ターゲットまたはその部分にブックマークを作成しようとする時の動機。
<http://example.org/anno47> a oa:Annotation ; oa:hasTarget <http://example.com/page1> ; oa:motivatedBy oa:bookmarking .
ユーザが、ターゲットを何かに分類しようとする時の動機。
<http://example.org/anno48> a oa:Annotation ; oa:hasBody <http://example.org/type1> ; oa:hasTarget <http://example.com/resource1> ; oa:motivatedBy oa:classifying .
ユーザがターゲットに関してコメントしようとする時の動機。
<http://example.org/anno49> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "A comment about the page" ] ; oa:hasTarget <http://example.com/page1> ; oa:motivatedBy oa:commenting .
ユーザが、ターゲットに関してコメントするのではなく、ターゲットを記述しようとする時の動機。
<http://example.org/anno50> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "A description of the image" ] ; oa:hasTarget <http://example.com/image1> ; oa:motivatedBy oa:describing .
ユーザが、ターゲット資源に変更や編集を要求しようとする時の動機。
<http://example.org/anno51> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "Editorial suggestion" ] ; oa:hasTarget <http://example.com/text1> ; oa:motivatedBy oa:editing .
ユーザが、ターゲット資源またはその断片をハイライト表示しようとする時の動機。
<http://example.org/anno52> a oa:Annotation ; oa:hasTarget <http://example.com/region1> ; oa:motivatedBy oa:highlighting .
ユーザが、ターゲットにIDを割り当てようとする時、またはターゲットに何が表現または説明されているかを識別しようとする時の動機。
<http://example.org/anno53> a oa:Annotation ; oa:hasBody <http://example.com/identities/object1> ; oa:hasTarget <http://example.com/image-of-object1> ; oa:motivatedBy oa:identifying .
ユーザが、ターゲットに関連する資源にリンクしようとする時の動機。
<http://example.org/anno54> a oa:Annotation ; oa:hasBody <http://example.org/from1> ; oa:hasTarget <http://example.com/to1> ; oa:motivatedBy oa:linking .
ユーザが、ターゲットに何からの価値または品質を割り当てようとする時の動機。
<http://example.org/anno55> a oa:Annotation ; oa:hasBody <http://example.org/tags/approved1> ; oa:hasTarget <http://example.com/anno1> ; oa:motivatedBy oa:moderating .
ユーザが、ターゲットに関して質問をしようとする時の動機。
<http://example.org/anno56> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "A question about the resource" ] ; oa:hasTarget <http://example.com/resource1> ; oa:motivatedBy oa:questioning .
ユーザが、前のステートメント(アノテーションか別の資源かのいずれか)に回答しようとする時の動機。
<http://example.org/anno57> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "A reply to a question" ] ; oa:hasTarget <http://example.com/anno1> ; oa:motivatedBy oa:replying .
ユーザが、ターゲットにタグを関連付けようとする時の動機。
<http://example.org/anno58> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "tag" ] ; oa:hasTarget <http://example.com/thing1> ; oa:motivatedBy oa:tagging .
コンテンツから自動的に決定すべきテキストの方向。
<http://example.org/anno59> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "Some text" ; oa:textDirection oa:autoDirection ] ; oa:hasTarget <http://example.com/thing1> .
左から右に読むテキストの方向。
<http://example.org/anno60> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "Left to Right text" ; oa:textDirection oa:ltrDirection ] ; oa:hasTarget <http://example.com/thing1> .
右から左に読むテキストの方向。
<http://example.org/anno61> a oa:Annotation ; oa:hasBody <http://example.org/ar/comment1> ; oa:hasTarget <http://example.com/thing1> . <http://example.org/ar/comment1> a dctypes:Text ; oa:textDirection oa:rtlDirection .
クライアントが、コンテナから、IRIのみでなく、アノテーションの完全な記述を受け取ることを望むことを知らせるIRI。
GET /annotations/ HTTP/1.1 Host: example.org Accept: application/ld+json; profile="http://www.w3.org/ns/anno.jsonld" Prefer: return=representation;include="http://www.w3.org/ns/ldp#PreferContainedDescriptions"
クライアントが、コンテナから、完全な記述ではなく、アノテーションのIRIのみを受け取ることを望むことを知らせるIRI。
GET /annotations/ HTTP/1.1 Host: example.org Accept: application/ld+json; profile="http://www.w3.org/ns/anno.jsonld" Prefer: return=representation;include="http://www.w3.org/ns/ldp#PreferContainedIRIs"
<http://example.org/anno62> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; as:generator <http://example.org/client1> . <http://example.org/client1> a as:Application ; foaf:homepage <http://example.com/homepage1> ; foaf:name "Code v2.1" .
<http://example.org/collection1> a as:OrderedCollection ; rdfs:label "Example Collection" ; as:totalItems 42023 ; as:first <http://example.org/collection1/page1> ; as:last <http://example.org/collection1/page42> .
<http://example.org/collection1/page1> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:next <http://example.org/collection1/page2> ; as:startIndex 0 ; as:items ( <http://example.org/anno1> <http://example.org/anno2> <http://example.org/anno3> ) .
<http://example.org/anno63> a oa:Annotation ; oa:motivatedBy oa:commenting ; oa:hasBody <http://example.com/note1> ; oa:hasTarget <http://example.com/dataset1> . <http://example.com/dataset1> a dctypes:Dataset ; dc:format "text/csv" .
<http://example.org/anno64> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "tag" ] ; oa:hasTarget <http://example.com/video1> ; oa:motivatedBy oa:tagging . <http://example.org/video1> a dctypes:MovingImage .
<http://example.org/anno65> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "tag" ] ; oa:hasTarget <http://example.com/image1> ; oa:motivatedBy oa:tagging . <http://example.org/image1> a dctypes:StillImage .
<http://example.org/anno66> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "tag" ] ; oa:hasTarget <http://example.com/audio1> ; oa:motivatedBy oa:tagging . <http://example.org/audio1> a dctypes:Sound .
<http://example.org/anno67> a oa:Annotation ; oa:hasBody [ a oa:TextualBody ; rdf:value "tag" ] ; oa:hasTarget <http://example.com/document1> ; oa:motivatedBy oa:tagging . <http://example.org/document1> a dctypes:Text .
<http://example.org/anno68> a oa:Annotation ; oa:hasBody <http://example.net/comment1> ; oa:hasTarget <http://example.com/restaurant1> ; dcterms:creator <http://example.org/org1> . <http://example.org/org1> a foaf:Organization ; foaf:name "Example Organization" .
<http://example.org/anno69> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; dcterms:creator <http://example.org/user1> . <http://example.org/user1> a foaf:Person ; foaf:nick "pseudo" ; foaf:name "My Pseudonym" .
<http://example.org/anno70> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; schema:audience <http://example.net/roles/musician> . <http://example.net/roles/musician> a schema:Audience ; schema:audienceType "musician" .
<http://example.org/collection1> a as:OrderedCollection ; rdfs:label "Example Collection" ; as:totalItems 42023 ; as:first <http://example.org/collection1/page1> ; as:last <http://example.org/collection1/page42> .
<http://example.org/anno71> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; as:generator <http://example.org/client1> . <http://example.org/client1> a as:Application ; foaf:homepage <http://example.com/homepage1> ; foaf:name "Code v2.1" .
<http://example.org/collection1/page1> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:next <http://example.org/collection1/page2> ; as:startIndex 0 ; as:items ( <http://example.org/anno1> <http://example.org/anno2> # ... <http://example.org/anno1000> ) .
<http://example.org/collection1> a as:OrderedCollection ; rdfs:label "Example Collection" ; as:totalItems 42023 ; as:first <http://example.org/collection1/page1> ; as:last <http://example.org/collection1/page42> .
<http://example.org/collection1/page1> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:next <http://example.org/collection1/page2> ; as:startIndex 0 ; as:items ( <http://example.org/anno1> <http://example.org/anno2> # ... <http://example.org/anno1000> ) .
<http://example.org/collection1/page1> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:next <http://example.org/collection1/page2> ; as:startIndex 0 ; as:items ( <http://example.org/anno1> <http://example.org/anno2> # ... <http://example.org/anno1000> ) .
<http://example.org/collection1/page2> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:prev <http://example.org/collection1/page1> ; as:next <http://example.org/collection1/page3> ; as:startIndex 1000 ; as:items ( <http://example.org/anno1001> <http://example.org/anno1002> # ... <http://example.org/anno2000> ) .
<http://example.org/collection1/page2> a as:OrderedCollectionPage ; as:partOf <http://example.org/collection1> ; as:prev <http://example.org/collection1/page1> ; as:next <http://example.org/collection1/page3> ; as:startIndex 1000 ; as:items ( <http://example.org/anno1001> <http://example.org/anno1002> # ... <http://example.org/anno2000> ) .
<http://example.org/collection1> a as:OrderedCollection ; rdfs:label "Example Collection" ; as:totalItems 42023 ; as:first <http://example.org/collection1/page1> ; as:last <http://example.org/collection1/page42> .
<http://example.org/anno72> a oa:Annotation ; oa:hasTarget <http://example.org/photo1> ; oa:hasBody [ a oa:TextualBody; rdf:value "<p>Comment text</p>" ; dc:language "en" ; dc:format "text/html" ] .
dc:language述語は、統制語彙の使用を推奨します。アノテーション・モデルでdc:languageを用いると、用いるべき語彙が[BCP47]であることがさらに規定されます。
<http://example.org/anno73> a oa:Annotation ; oa:hasTarget <http://example.org/photo1> ; oa:hasBody [ a oa:TextualBody; rdf:value "<p>Comment text</p>" ; dc:language "en" ; dc:format "text/html" ] .
<http://example.org/anno74> a oa:Annotation ; oa:hasBody <http://example.org/image1> ; oa:hasTarget [ oa:hasSource <http://example.org/video1> ; oa:hasSelector [ a oa:FragmentSelector ; dcterms:conformsTo <http://www.w3.org/TR/media-frags/> ; rdf:value "t=30,60" ] ] .
<http://example.org/anno75> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; dcterms:created "2015-10-13T13:00:00Z" .
<http://example.org/anno76> a oa:Annotation ; oa:hasBody <http://example.net/post1> ; oa:hasTarget <http://example.com/page1> ; dcterms:creator <http://example.org/person1> .
<http://example.org/anno77> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; dcterms:issued "2015-10-14T15:13:28Z" ; as:generator <http://example.org/client1> . <http://example.org/client1> a as:Application .
<http://example.org/anno78> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; dcterms:created "2015-10-13T13:00:00Z" ; dcterms:modified "2015-11-29T10:00:00Z" .
<http://example.org/anno79> a oa:Annotation ; dcterms:rights <https://creativecommons.org/publicdomain/zero/1.0/> ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/product1> . <http://example.net/review1> a dctypes:Text ; dcterms:rights <http://creativecommons.org/licenses/by-nc/4.0/> .
<http://example.org/anno80> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/restaurant1> ; as:generator <http://example.org/client1> . <http://example.org/client1> a as:Application ; foaf:homepage <HomePage1> ; foaf:name "Code v2.1" .
<http://example.org/anno81> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; dcterms:creator <http://example.org/user1> . <http://example.org/user1> a foaf:Person ; foaf:mbox <mailto:user1@example.org> .
<http://example.org/anno82> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; dcterms:creator <http://example.org/user1> . <http://example.org/user1> a foaf:Person ; foaf:mbox_sha1sum "7d97e98f8af710c7e7fe703abc8f639e0ee507c4" .
<http://example.org/anno83> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; dcterms:creator <http://example.org/user1> . <http://example.org/user1> a foaf:Person ; foaf:nick "pseudo" ; foaf:name "My Pseudonym" .
<http://example.org/anno84> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; dcterms:creator <http://example.org/user1> . <http://example.org/user1> a foaf:Person ; foaf:nick "pseudo" ; foaf:name "My Pseudonym" .
<http://example.org/anno85> a oa:Annotation ; oa:hasBody <http://example.org/post1> ; oa:hasTarget <http://example.com/page1> ; oa:motivatedBy oa:commenting ; dcterms:creator <http://example.org/person1> ; dcterms:created "2015-11-18T12:00:00Z" .
<http://example.org/anno86> a oa:Annotation ; oa:hasTarget <http://example.org/photo1> ; oa:hasBody [ a oa:TextualBody; rdf:value "<p>Comment text</p>" ; dc:language "en" ; dc:format "text/html" ] .
<http://example.org/collection1> a as:OrderedCollection ; rdfs:label "Example Collection" ; as:totalItems 42023 ; as:first <http://example.org/collection1/page1> ; as:last <http://example.org/collection1/page42> .
<http://example.org/anno87> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/video1> . <http://example.com/video1> a dctypes:MovingImage ; schema:accessibilityFeature "captions" .
<http://example.org/anno88> a oa:Annotation ; oa:hasBody <http://example.net/review1> ; oa:hasTarget <http://example.com/book1> ; schema:audience <http://example.net/roles/musician> . <http://example.net/roles/musician> a schema:Audience ; schema:audienceType "musician" .
この語彙は、他のRDFベースのオントロジーから述語とクラスを新規作成するか既存のものをインポートすることにより、規則的な方法で拡張できます。プロパティーだけでなく新しいオブジェクトの追加を含む、任意の資源に拡張を行うことができます。すでにコンテキストに含まれているオントロジーの1つにプロパティーがある場合は、新しいコンテキストを作成するのではなく、JSON-LDキーとしてCURIE(:という文字で区切られた名前空間とプロパティー名)を用いることを推奨します(RECOMMENDED)。
例えば、新しいコンテキストのドキュメントをダウンロードしてマッピングを発見するようにクライアントに要求するのではなく、skos:prefLabelをアノテーションに追加する方が容易です。
{
"@context": "http://www.w3.org/ns/anno.jsonld",
"id": "http://example.org/anno89",
"type": "Annotation",
"skos:prefLabel": "Picture Annotation",
"body": {
"type": "TextualBody",
"value": "I love this picture!"
},
"target": {
"id": "http://example.com/images/picture1",
"type": "Image"
}
}
キー名の間の衝突を確実になくすために、すでにウェブ・アノテーションのコンテキストにあるオントロジーの用語でない場合に、JSON-LDコンテキスト・ドキュメントを利用できるようにすべきです(SHOULD)。拡張コンテキストは、ウェブ・アノテーションのコンテキストの既存のJSON-LDキーを精緻化してはなりません(MUST NOT)。実装では、データを処理する時に、見慣れないプロパティーを無視しなければなりませんが(MUST)、サーバーは、それが有効で、含まれているコンテキストの一部であれば、保持すべきです(SHOULD)。
コンテキストは、拡張プロパティーを最も密接にカプセル化する資源と関連付けられるべきです(SHOULD)。これは、同じキーを定義している拡張が予期せず衝突しないようにするためです。特定の資源に複数のコンテキスト・ドキュメントがある場合は、それらを配列に含めなければなりません。
例えば、 EXIF語彙[exif]を用いたターゲット画像の高さと幅の追加は、JSON-LDコンテキストを定義し、heightとwidthのプロパティーを含め、ターゲット資源の新しく定義されたコンテキストにリンクすることで行うことができます。
{
"@context": "http://www.w3.org/ns/anno.jsonld",
"id": "http://example.org/anno90",
"type": "Annotation",
"skos:prefLabel": "Picture Annotation",
"body": {
"type": "TextualBody",
"value": "I love this picture!"
},
"target": {
"@context": "http://example.org/images/ns/extension.jsonld",
"id": "http://example.com/images/picture1",
"type": "Image",
"height": 768,
"width": 1024
}
}
現在のJSON-LD[JSON-LD]仕様では、配列に他の配列を直接含めることできないことに注意してください。JSON-LDは推奨される(RECOMMENDED)シリアル化形式であるため、拡張はこのパターンの使用を回避すべきです(SHOULD)。
最後に、新しいクラスを定義して、特定のコミュニティとユースケースのモデルをさらに拡張することができます。新しいセレクタと状態は、表現を定義する新しい方法、およびその表現の断片を選択するための拡張に特に重要です。
例えば、三次元モデルのアノテーションには、x、y、幅、高さとともに、z軸の深さと開始位置を追加する必要があるでしょう。これらは新しいThreeDSelector資源で一緒に保持できるかもしれません。
{
"@context": "http://www.w3.org/ns/anno.jsonld",
"id": "http://example.org/anno91",
"type": "Annotation",
"skos:prefLabel": "3d Annotation",
"body": {
"type": "TextualBody",
"value": "I love this part of the model!"
},
"target": {
"source": "http://example.org/models/robot.3d",
"selector": {
"@context": "http://example.org/3d/ns/extension.jsonld",
"type": "ThreeDSelector",
"x": 1035,
"y": 245,
"z": 782,
"w": 120,
"h": 180,
"d": 90
}
}
}
この項は非規範的です。
推奨される(RECOMMENDED)シリアル化形式は[JSON-LD]です。下記に示しているJSON-LDコンテキストは、実装間の一貫性を確保するために推奨されており(RECOMMENDED)、http://www.w3.org/ns/anno.jsonldで参照されるべきです(SHOULD)。同じIRIを、モデルとコンテキストに準拠した表現に対するプロファイルIRIとして用いるべきです(SHOULD)。
{
"@context": {
"oa": "http://www.w3.org/ns/oa#",
"dc": "http://purl.org/dc/elements/1.1/",
"dcterms": "http://purl.org/dc/terms/",
"dctypes": "http://purl.org/dc/dcmitype/",
"foaf": "http://xmlns.com/foaf/0.1/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"skos": "http://www.w3.org/2004/02/skos/core#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"iana": "http://www.iana.org/assignments/relation/",
"owl": "http://www.w3.org/2002/07/owl#",
"as": "http://www.w3.org/ns/activitystreams#",
"schema": "http://schema.org/",
"id": {"@type": "@id", "@id": "@id"},
"type": {"@type": "@id", "@id": "@type"},
"Annotation": "oa:Annotation",
"Dataset": "dctypes:Dataset",
"Image": "dctypes:StillImage",
"Video": "dctypes:MovingImage",
"Audio": "dctypes:Sound",
"Text": "dctypes:Text",
"TextualBody": "oa:TextualBody",
"ResourceSelection": "oa:ResourceSelection",
"SpecificResource": "oa:SpecificResource",
"FragmentSelector": "oa:FragmentSelector",
"CssSelector": "oa:CssSelector",
"XPathSelector": "oa:XPathSelector",
"TextQuoteSelector": "oa:TextQuoteSelector",
"TextPositionSelector": "oa:TextPositionSelector",
"DataPositionSelector": "oa:DataPositionSelector",
"SvgSelector": "oa:SvgSelector",
"RangeSelector": "oa:RangeSelector",
"TimeState": "oa:TimeState",
"HttpRequestState": "oa:HttpRequestState",
"CssStylesheet": "oa:CssStyle",
"Choice": "oa:Choice",
"Person": "foaf:Person",
"Software": "as:Application",
"Organization": "foaf:Organization",
"AnnotationCollection": "as:OrderedCollection",
"AnnotationPage": "as:OrderedCollectionPage",
"Audience": "schema:Audience",
"Motivation": "oa:Motivation",
"bookmarking": "oa:bookmarking",
"classifying": "oa:classifying",
"commenting": "oa:commenting",
"describing": "oa:describing",
"editing": "oa:editing",
"highlighting": "oa:highlighting",
"identifying": "oa:identifying",
"linking": "oa:linking",
"moderating": "oa:moderating",
"questioning": "oa:questioning",
"replying": "oa:replying",
"reviewing": "oa:reviewing",
"tagging": "oa:tagging",
"auto": "oa:autoDirection",
"ltr": "oa:ltrDirection",
"rtl": "oa:rtlDirection",
"body": {"@type": "@id", "@id": "oa:hasBody"},
"target": {"@type": "@id", "@id": "oa:hasTarget"},
"source": {"@type": "@id", "@id": "oa:hasSource"},
"selector": {"@type": "@id", "@id": "oa:hasSelector"},
"state": {"@type": "@id", "@id": "oa:hasState"},
"scope": {"@type": "@id", "@id": "oa:hasScope"},
"refinedBy": {"@type": "@id", "@id": "oa:refinedBy"},
"startSelector": {"@type": "@id", "@id": "oa:hasStartSelector"},
"endSelector": {"@type": "@id", "@id": "oa:hasEndSelector"},
"renderedVia": {"@type": "@id", "@id": "oa:renderedVia"},
"creator": {"@type": "@id", "@id": "dcterms:creator"},
"generator": {"@type": "@id", "@id": "as:generator"},
"rights": {"@type": "@id", "@id": "dcterms:rights"},
"homepage": {"@type": "@id", "@id": "foaf:homepage"},
"via": {"@type": "@id", "@id": "oa:via"},
"canonical": {"@type": "@id", "@id": "oa:canonical"},
"stylesheet": {"@type": "@id", "@id": "oa:styledBy"},
"cached": {"@type": "@id", "@id": "oa:cachedSource"},
"conformsTo": {"@type": "@id", "@id": "dcterms:conformsTo"},
"items": {"@type": "@id", "@id": "as:items", "@container": "@list"},
"partOf": {"@type": "@id", "@id": "as:partOf"},
"first": {"@type": "@id", "@id": "as:first"},
"last": {"@type": "@id", "@id": "as:last"},
"next": {"@type": "@id", "@id": "as:next"},
"prev": {"@type": "@id", "@id": "as:prev"},
"audience": {"@type": "@id", "@id": "schema:audience"},
"motivation": {"@type": "@vocab", "@id": "oa:motivatedBy"},
"purpose": {"@type": "@vocab", "@id": "oa:hasPurpose"},
"textDirection": {"@type": "@vocab", "@id": "oa:textDirection"},
"accessibility": "schema:accessibilityFeature",
"bodyValue": "oa:bodyValue",
"format": "dc:format",
"language": "dc:language",
"processingLanguage": "oa:processingLanguage",
"value": "rdf:value",
"exact": "oa:exact",
"prefix": "oa:prefix",
"suffix": "oa:suffix",
"styleClass": "oa:styleClass",
"name": "foaf:name",
"email": "foaf:mbox",
"email_sha1": "foaf:mbox_sha1sum",
"nickname": "foaf:nick",
"label": "rdfs:label",
"created": {"@id": "dcterms:created", "@type": "xsd:dateTime"},
"modified": {"@id": "dcterms:modified", "@type": "xsd:dateTime"},
"generated": {"@id": "dcterms:issued", "@type": "xsd:dateTime"},
"sourceDate": {"@id": "oa:sourceDate", "@type": "xsd:dateTime"},
"sourceDateStart": {"@id": "oa:sourceDateStart", "@type": "xsd:dateTime"},
"sourceDateEnd": {"@id": "oa:sourceDateEnd", "@type": "xsd:dateTime"},
"start": {"@id": "oa:start", "@type": "xsd:nonNegativeInteger"},
"end": {"@id": "oa:end", "@type": "xsd:nonNegativeInteger"},
"total": {"@id": "as:totalItems", "@type": "xsd:nonNegativeInteger"},
"startIndex": {"@id": "as:startIndex", "@type": "xsd:nonNegativeInteger"}
}
}
この項は非規範的です。
RDFグラフを特定のJSON-LDドキュメント・レイアウトにシリアル化するための決定的なレイアウトを記述する非公式ながらもうまく実装されているJSON-LD仕様[json-ld-framing]が存在しています。下記のフレームを情報のグラフに適用することにより、ウェブ・アノテーション・データ・モデルで推奨されているシリアル化とできる限り近いJSONが生成されるでしょう。
1つのアノテーションをシリアル化するためのフレーム。
{
"@context": "http://www.w3.org/ns/anno.jsonld",
"@omitDefault": true,
"type": "Annotation",
"via": {"@embed": false},
"canonical": {"@embed": false},
"rights": {"@embed": false},
"motivation": {"@embed": false},
"body": {"@embed": true},
"target": {"@embed": true},
"creator": {"@embed": true},
"generator": {"@embed": true},
"audience": {"@embed": true}
}
アノテーションのコレクションをシリアル化するためのフレーム。
{
"@context" : [
"http://www.w3.org/ns/anno.jsonld",
"http://www.w3.org/ns/ldp.jsonld"
],
"type": "Collection",
"first": [{"@embed": "False"}],
"last": [{"@embed": "False"}]
}
firstに対するfalse(偽)をtrue(真)に変更してください。アノテーションのコレクションのページをシリアル化するためのフレーム。
{
"@context": "http://www.w3.org/ns/anno.jsonld",
"@omitDefault": true,
"type": "AnnotationPage",
"next": {"@embed": false},
"prev": {"@embed": false},
"partOf": {"@embed": false},
"items": {"@embed": true}
}
この項は非規範的です。
この仕様の動機のリストは、アノテーションに関する状況の幅広い調査から得られたものですが、より正確な定義が必要または望ましい状況が多くあります。そのような場合には、新しい動機資源を作成し、それを既存の1つ以上のものと関係づけることが推奨されます(RECOMMENDED)。
新しい動機は、oa:Motivationのインスタンスでなければならず(MUST)、それはskos:Conceptのサブクラスです。範囲がより広い場合には、新しい動機と少なくとも1つの既存の動機との間でskos:broader関係が言明されるべきです(SHOULD)。skos:relatedMatch、skos:exactMatch、skos:closeMatchなどのその他の関係も、他のコミュニティにより作成された概念に対して言明されるべきです(SHOULD)。
この項は非規範的です。
下記のクラスがオントロジーに推奨されましたが、必要な実装がなかったため、結果として削除されました。
as:itemsリストのすべての資源を用いるべきであるけれども、その順序は重要ではないと利用アプリケーションに伝えるas:OrderedCollectionのサブクラス。

<http://example.org/anno92> a oa:Annotation ; oa:motivatedBy oa:commenting ; oa:hasBody [ a oa:TextualBody ; rdf:value "These pages together provide evidence of the conspiracy" ] ; oa:hasTarget [ a oa:Composite ; as:items ( <http://example.org/page1> <http://example.org/page6> <http://example.org/page4> ) ] .
as:itemsリストの各資源がその他のすべての本体またはターゲットと独立して関連付けられていることを利用アプリケーションに伝えるas:OrderedCollectionのサブクラス。

<http://example.org/anno93> a oa:Annotation ; oa:motivatedBy oa:classifying ; oa:hasBody <http://example.org/vocab/art/portrait> ; oa:hasTarget [ a oa:Independents ; as:items ( <http://example.com/image1> <http://example.net/image2> <http://example.com/image4> <http://example.org/image9> ) ] .
as:itemsリストの各資源を用いるべきであり、それらの順序は重要であると利用アプリケーションに伝えるas:OrderedCollectionのサブクラス。

<http://example.org/anno94> a oa:Annotation ; oa:motivatedBy oa:tagging ; oa:hasBody [ a oa:TextualBody ; rdf:value "important" ] ; oa:hasTarget [ a oa:List ; as:items ( <http://example.com/book/page1> <http://example.net/book/page2> <http://example.com/book/page3> <http://example.org/book/page4> ) ] .
この項は非規範的です。
この仕様を勧告案に進めるためには、語彙の妥当性を実証する少なくとも2つの独立した実装がなければなりません。以下の条件が実証された時には、語彙は有効であるとみなされるでしょう。
コンテキストと資源がいったんグラフに変換されれば、JSON-LDはその間の調整を維持しないため、拡張の述語および/またはクラスを用いる資源のシリアル化に拡張コンテキスト・ドキュメントを含めるというJSON-LDの拡張の推奨パターンは、往復可能ではありません。グラフの結果として作成されるJSON-LDシリアル化内のJSONキーの順序と正確な名前の付与は、語彙の機能とは見なされないため、その妥当性を示す必要はありません。代わりに、キーの名前の付与はアノテーション・モデルの機能であり、その終了基準に基づいて検証されます。
この項は非規範的です。
重要な変更はない。
2016年3月31日の草案公開からのこの仕様の重要な技術的変更は、下記のとおりです。
この項は非規範的です。
ウェブ・アノテーション・ワーキンググループは、オープン・アノテーション・コミュニティ・グループの貢献に謝意を表します。コミュニティ・グループの成果が現在のデータ・モデルの基礎となりました。
この仕様の作成において、次の方々に、アイデア、フィードバック、レビュー、コンテンツ、批評およびインプットの提供でご協力いただきました。