この文書「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の公式な日本語訳ではありません。翻訳・解釈に誤りがある可能性があります。原文の最新版が存在する可能性があります。
アノテーション(Annoation)が、複数の本体(Body)、ターゲット(Target)、もしくはその両方から構成されるユースケースが多くある。複数の本体(Body)、ターゲット(Target)のためにコアで定義されたセマンティクスは、それぞれのリソースが個々に他のリソースと関係を持っていることであるが、いつもそのケースとはかぎらない。アノテーション(Annoation)を代替となるあるグループからの1つのリソースと関係づけるのに役に立つ。例えば、異なる3つの言語で利用可能なコメントを持ち、ユーザーのクライアントがその中から適切な1つの言語を表示させる場合。または、リソースを比較する時のように全てのリソースが等しく重要であるリソースのセットにアノテートする場合である。この後者のケースでは、コメントはリソースに個々に適用されず、それらのすべてに適用される。最後に、特に意図したセグメントを抽出するために適切な順序で処理しなければならないセレクタ(Selector)のグルーピングのためにリソースのそのセットの順序付けが考慮されれば有用である。
Open Annotationモデルは、これらの要件をモデル化するために3つの多重構造物を含んでいる。oa:Choice、oa:Composite
およびoa:List
である。これらのノードは、oa:hasBody、oa:hasTarget、oa:hasSelector,、oa:hasState, oa:styledBy
のオブジェトとoa:hasScope
関係として使用され、oa:item
関係を使用する構成リソースを順に参照する。アイテムはリソースもしくはさらに複数のリソースからなる構造物のようかもしれない。例えば、複合物(Composite)は、2つのアイテムをもつかもしれず、そのうちの1つはリソースであり、もう1つは2つのさらなるリソースの間にあるoa:Choice
かもしれない。
多重構造物は、UUID、URNのような、識別するためのグローバルにユニークなURIを持つべきである(SHOULD)。URIは解決可能であってもよい(MAY)。アノテーション(Annotation)グラフのように、そのURIが構造物のRDFのdescription要素である場合、もしデリファレンスされたときに返されなければならない(MUST)。この識別勧告はrdf:Alt
、rdf:Bag
、rdf:List
の同等クラスでは、標準的ではない。それらのクラスに基づく要件のさらなる処理およびモデリングを有効な状態にすることができない。他のアノテーションやシステムから直接参照されることが重要であると考えられないならば、RDF空白ノードを使用して構造物が代わりにモデリングされることはよい(MAY)。
注意事項:以下の全ての例が1つのレベルの1つの構造物を表示しているが、同じパターンは、全ての関係と1つ以上のグルーピングされたリソースからなる構造物に従う。
語彙項目 タイプ 説明 oa:item Relationship [rdfs:memberのサブプロパティ] 複数の構造ノードと構成要素であるリソースとの関係
1個以上のアイテムがなくてはならない(MUST)。
選択(Choice)は、アノテーション(Annotation)を利用するアプリケーション処理をするか表示するかを選択するリソースのセットである。指定子(Specifier)にとって、選択(Choice)が同等か等価であるときに、クライアントは使用するための構成要素リソースの中から1つ選ぶべきである。クライアントは、どのリソースを選ぶべきかの決定に任意のアルゴリズムを使用しようしてもよい(MAY)。そして、自動的にそれを行うために、アノテーション(Annotation )の中にある情報表示を利用するべきである(SHOULD)。または、リストを表示し、ユーザーに決断を求めてもよい(MAY)。
選択(Choice)は、デフォルトのオプションを用意すべきである。これは、クライアントが独自の好みを持っていない場合に、アノテーション(Annotation)の発行者が使用されるべきことを推奨する構造要素リソースである。この機能は、特に好まれるセレクタ(Selector)もしくは状態(State)を表現するために使用されるべきである。rdf:Alt
は等価的なプロパティを持たないことに注意する。
語彙項目 タイプ 説明 oa:Choice Class [rdf:Altのサブクラス] 利用するアプリケーションに構成要素リソースの中からユーザーに表示する1個を選ぶべきことと、全てをレンダリングしないことを伝える1個の多重構造物。 この構造物は、rdf:Alt container クラスと等価である。 oa:default Relationship [oa:itemのサブプロパティ] 最も適切なものを決定する他の手段がない場合にデフォルトオプションとして使用するための構成要素リソース。
各選択(Choice)にきっちり1個ずつのデフォルトの関係があるべきである(SHOULD)。
<anno1> a oa:Annotation ; oa:hasBody <choice1> ; oa:hasTarget <target1> . <choice1> a oa:Choice ; oa:default <body1> ; oa:item <body2> .
SELECT ?anno WHERE { ?anno oa:hasBody ?body . ?body a oa:Choice . ?body oa:default ?default } => <anno1>
複合物(Composite)は、アノテーション(Annotation)が正しく解釈されるために全てに要求されるリソースのセットである。以下の例では、2つのリソース間の違いを比較したアノテーション(Annotation)もしくは人間が読むことができる形式のものと必要な構造化データ·ファイルの両方で本体(Body)が構成されるアノテーション(Annotation)が含まれている。それぞれが個々にアノテーション(Annotation)を作成したりされたりするため、これらは個別の本体(body)とターゲット(target)である。1つのセレクタ(Selector)はビデオの時間範囲を指定し、もう1つのセレクタ(Selector)がその時間範囲上に示すために長方形ではないエリアを指定するなど、2つのセレクタ(Selector)を使用するなど、指定子(Specifier)を組み合わせることができることも重要である。
データモデルは、oa:Composite
クラスを定義し、上で定義されたoa:item
関係を使用する。各複合物(Composite)は2つ以上の構成要素リソースを持っていなければならない(MUST)。そして、すべてが要求された時にデフォルトではない。
語彙項目 タイプ 説明 oa:Composite Class [subClass of rdf:Bag] アノテーション(Annotation)が正しく解釈されるために全ての構成要素リソースが要求されることをアプリケーションに伝える多重構造物。この構造物は rdf:Bag
クラスのRDFコンテナと等価である。
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <comp1> . <comp1> a oa:Composite ; oa:item <target1> ; oa:item <target2> .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:Composite . ?target oa:item <Target1> } => <anno1>
リスト(List)には、アノテーション(Annotation)のコンテキストでその構成要素リソースに順序を与える複合物(Composite)である。以下の図にある使用例では、セレクタ(Selector)が特に強い。そこでは、アプリケーションの処理が最初の選択にならなくてはならない。もしそれが他の順序で行われたなら、結果は正しくないものになるだろう。これは、独自のURIを持たない本の中の特定のページを参照し、そのページの中のテキストを選択する状況が含まれている。別のユースケースは、クラスの定義に優先順位をつけるためにスタイル(Style)のセットに順序を割り振る。
rdf:List
構造には順序が与えられるべきである。oa:List
リソースは、同時にrdf:first
関係とrdf:rest
関係を持つrdf:List
リソースである。リソースは、指定された順序で処理されるべきである。シリアライゼーションフォーマットは、以下の図で描かれた複雑さを隠すリスト表現する異なる方法を持っている。
アノテーション(Annotation)作成者はoa:item
とリストの述語の両方を提供するべきである(SHOULD)。これによりリンクされたリスト構造物を通して反復せずに順序付けされていない方式でリストを処理するためのフォールバックをクライアントにさせることができる。
rdf:first
、rdf:rest
パターンからoa:item
のステートメントを自動的に抽出するアルゴリズムはrdf:first rdfs:subPropertyOf oa:item . oa:item owl:propertyChainAxiom ( rdf:rest oa:item ) .
語彙項目 タイプ 説明 oa:List Class [oa:Compositeのサブクラス] アノテーション(Annotation)が正しく、そして、特定の順序で解釈されるため全ての構成要素リソースが要求されることをアプリケーションに伝える多重構造物。この構造物はrdf:BagクラスのRDFコンテナと等価である。 rdf:List Class rdf:Listは順序付けされたリストとその他のリストライクな構造のdecriptionの構築に使用することができるリソース rdf:first Relationship ある特定のリストの最初のリソース。リストの残りは rdf:restによって参照される rdf:rest Relationship rdf:Listのインスタンスかリストにさらなるアイテムがなければrdf:nilのインスタンス rdf:nil Resource 空のリストを表現するrdf:List のある特定のインスタンス
<anno1> a oa:Annotation ; oa:hasBody <body1> ; oa:hasTarget <sptarget1> . <sptarget1> a oa:SpecificResource ; oa:hasSource <source1> ; oa:hasSelector <list1> . <list1> a oa:List, rdf:List ; oa:item <selector1>, <selector2> ; rdf:first <selector1> ; rdf:rest ( <selector2> ) .
SELECT ?anno WHERE { ?anno oa:hasTarget ?target . ?target a oa:SpecificResource . ?target oa:hasSelector ?list . ?list a oa:List } => <anno1>