附属書F XTM処理要件

F.1 導入

附属書Fは,適合XTMプロセサのための最小限の要件を示す。最小限,XTMプロセサは,無矛盾トピックマップがそのプロセサのクライアントによってアクセス可能な方法でトピックマップ文書に含まれるトピックマップ情報を表現する内部モデルへと,一つ以上のトピックマップ文書を処理できることが要求される。

XTM処理要件は,次の点に関して示される。

F.2 同等性原理

F.2における同等性に関する記述は,適合XTMプロセサがトピックマップの構成要素の同等性を決定するために要求される規則を定義する。

F.2.1 文字列の同等性原理

適合XTMプロセサは,同等性のために二つの文字列を比較できることを要求される。比較を行う前に,適合XTMプロセサは,すべての文字列をUnicode/ISO 10646に符号化変換しなければならない。この符号化変換を与えることによって,二つの文字列は,それらがスカラ値の同一の列に符号化された場合,同等とみなす。適合XTMプロセサ応用は,文字列の同等性を決定するために付加的なアルゴリズムを適用してもよい。

F.2.2 URIの同等性原理

適合XTMプロセサは,適切なURI方式に対して定義された規則を使用して,それらが等しいと分かる場合,二つのURIは,等しいとしなければならない。

RFC 2396の6.は,二つのURIを等しいとみなす方法の一般的定義を提供する。次に,適合XTMプロセサがサポートしなければならないURI方式への参照の集合を示す。

F.2.3 有効範囲の同等性原理

無矛盾トピックマップでは,適合XTMプロセサは,二つの有効範囲がトピックの同じ集合を含む場合,それらの二つの有効範囲を等しいとしなければならない。

F.2.4 関連の同等性原理

適合XTMプロセサは,次が真の場合,二つの関連は等しいとしなければならない。

a) 関連は,役割の同じ集合から構成される。
b) 関連において各々の役割を演じるトピックの集合は,等しい。
c) 関連は,同じクラスのインスタンスになっている。
d) 関連の有効範囲は,有効範囲の同等性原理によって定義されるとおりに等しい。

F.2.5 トピック名の同等性原理

二つの基底名は,次が真の場合,等しいと考える。

a) 基底名の文字列値は,文字列の同等性原理によって定義されたとおりに等しい。
b) 基底名が出現する有効範囲は,有効範囲の同等性原理によって定義されたとおりに等しい。

異形名は,二つの名前が等しいかどうか決定する場合には,無視する。

F.2.6 トピック出現の同等性原理

二つのトピック出現は,次が真の場合,等しいと考える。

a) <resourceRef>要素の場合は,出現を番地付けするために使用するURIは,URIの同等性原理によって定義されるとおりに等価になっている。
<resourceData>要素の場合は,それが出現である資源データの値が等しい。値の比較を行う前に,XTMプロセサは,すべての文字列をUnicode/ISO 10646に符号化変換しなければならない。この符号化変換を与えることによって,二つの資源データは,それらがスカラ値の同一の列として符号化される場合,等しいと考える。
b) 出現は,同じクラスに属する。
c) 出現の有効範囲は,有効範囲の同等性原理によって定義されるとおりに等しい。

F.3 等価性原理

等価性原理は,同じトピックマップノードが異なる構文表現によって運ばれてもよいような異なる方法を示す。適合XTMプロセサは,F.3で列挙するとおりに,トピックマップ構成要素のすべての等価な構文表現を認識し,処理済みトピックマップではどの構文表現が使用されたかを検知できない方法でそれら(構文表現)を処理することが要求される。

F.3.1 <subjectIndicatorRef>及び<topicRef>の等価性

トピックAを参照する<subjectIndicatorRef>要素は,同じくトピックAを参照する<topicRef>要素によって,等価的に表現されてよい。

トピック以外の資源を参照する<subjectIndicatorRef>要素は,その資源を主題指示子としてみなすトピックを参照する<topicRef>要素によって,等価的に,表現されてよい。

F.3.2 <instanceOf>及び<association>の等価性

<instanceOf>要素は,<instanceOf>要素の子要素から参照される<topic>T と,<instanceOf>要素の親要素である<topic><association>又は<occurrence>との間の関係を表現する。

この関係は,公開された主題“class-instance”のインスタンスで,制約なしの有効範囲の中で“class”の役割及び“instance”の役割の二つの役割をもつ<association>によって,等価的に表現してよい。“class”の役割を演じるのは,トピックT である。<instanceOf>の親要素が<topic>要素の場合,“instance”の役割を演じるのは,<topic>要素によって表現されたトピックになる。<instanceOf>の親要素が<topic>要素でない場合には,“instance”の役割を演じるのは,その親要素によって表現される関連又は出現を具体化するトピックになる。

<association>が“class-instance”関係を表すのに使用されている場合,次のいずれかが真のとき,それは報告可能なXTMエラーになる。

a) “class”の役割は,番地付け可能な主題をもつとビックによって演じられる。
b) “class”の役割又は“instance”の役割のどちらかは,関連の役割ではない。
c) “class”の役割及び“instance”の役割以外の役割が,関連の一部になる。

F.3.3 同じ役割の複数の<member>の等価性

同じ役割R の複数のメンバM1 及びM2 を含む関連は,演じるものの集合が,メンバM1 及びM2 において役割R を演じるものの集合の合併となるような,役割R の一つのメンバM3 を含む関連によって,等価的に定義されてよい。

F.4 異形操作

F.4.1 異形の有効範囲の処理

<variant>要素が定義する異形名の処理文脈は,その<variant>要素及びそのすべての先祖の<variant>要素のパラメタの合併として定義される。

このように,パラメタの集合をもつ異形名は,親の異形に関するパラメタの同じ集合をもち,(それ自体は)付加的なパラメタをもたないものと等価とする。

F.5 併合操作

F.5.1 トピック併合操作

事前条件

a) 二つのトピック,A 及びB は,併合されることが望ましい。

事後条件

a) 一つのトピックM が存在する。
b) M の名前特質の集合は,A 及びB の名前特質の集合の合併に等しい。
c) M の主題指示子の集合は,A 及びB の主題指示子の集合の合併に等しい。
d) M の番地付け可能な主題は,A 又はB のいずれかの番地付け可能な主題に等しい。
e) M は,トピックマップの中の関連において演じられるあらゆる役割を演じるものとして,A 及びB を置きかえる。
f) M の出現割当ての集合は,A 及びB の出現割当ての合併に等しい。
g) A 及びB は,もはや存在しない。

エラー条件

次の場合は,報告可能なXTMエラーとする。

a) トピックA 及びB は,異なる番地付け可能な主題をもつ。

併合操作の前
  <topicMap>

    <topic id="t34">
      <baseName>
        <baseNameString>Hamlet</baseNameString>
      </baseName>
      <occurrence>
        <resourceRef xlink:href="http://www.topicmaps.org/examples/hamlet.html" />
      </occurrence>
    </topic>

    <topic id="t35">
      <baseName>
        <baseNameString>Hamlet</baseNameString>
      </baseName>
      <baseName>
        <baseNameString>The Prince Of Denmark</baseNameString>
      </baseName>
      <occurrence>
        <resourceRef xlink:href="http://www.topicmaps.org/examples/hamlet_again.html" />
      </occurrence>
    </topic>

    <association>
      <member>
        <roleSpec><topicRef xlink:href="#t-play"/></roleSpec>
        <topicRef xlink:href="#t-hamlet" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#t-character"/></roleSpec>
        <topicRef xlink:href="#t34" />
      </member>
    </association>

    <association>
      <member>
        <roleSpec><topicRef xlink:href="#t-play"/></roleSpec>
        <topicRef xlink:href="#t-hamlet" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#t-character"/></roleSpec>
        <topicRef xlink:href="#t35" />
      </member>
    </association>

  </topicMap>
併合操作の後

  <topicMap>

  <!--
     Note that the topics are merged and as a result of this the
     association duplicate redundancy rule is invoked. This removes
     the now duplicate association.
  -->

    <topic id="t36">
      <baseName>
        <baseNameString>Hamlet</baseNameString>
      </baseName>
      <baseName>
        <baseNameString>The Prince Of Denmark</baseNameString>
      </baseName>
      <occurrence>
        <resourceRef xlink:href="http://www.topicmaps.org/examples/hamlet.html" />
      </occurrence>
      <occurrence>
        <resourceRef xlink:href="http://www.topicmaps.org/examples/hamlet_again.html" />
      </occurrence>
    </topic>

    <association>
      <member>
        <roleSpec><topicRef xlink:href="#t-play"/></roleSpec>
        <topicRef xlink:href="#t-hamlet" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#t-character"/></roleSpec>
        <topicRef xlink:href="#t36" />
      </member>
    </association>

  </topicMap>

F.5.2 主題に基づく併合操作

事前条件

次のいずれかの場合に,トピックマップM の中に,二つのトピックA 及びB が存在する。

a) A 及びB の番地付け可能な主題のURIは,URIの等価性原理に従って等しい。
b) トピックB は,トピックA の主題指示子になっている。
c) 二つのURI,U1 及びU2,が存在し,U1 がトピックA の主題指示子,U2 がトピックB の主題指示子であって,URIの等価性原理に従ってU1U2 は等しい。
d) 二つのURI,U1 及びU2,が存在し,U1 がトピックA の主題指示子,U2 がトピックB の主題指示子であって,XTM処理応用は,応用固有の処理を通して,U1 の参照する主題指示子が,U2 の参照する主題指示子と同じ主題を指示すると決定した。

事後条件

a) トピックA 及びB は,トピック併合操作によって規定されているとおりの事前条件及び事後条件で併合される。

例1 A 及びB の番地付け可能な主題のURIが等しい場合

併合操作の前

  <topicMap>
    <topic id="t1">
      <subjectIdentity>
        <resourceRef xlink:href="http://www.topicmaps.org" />
      </subjectIdentity>
      <baseName>
        <baseNameString>TopicMaps.Org web-site</baseNameString>
      </baseName>
    </topic>

    <topic id="t2">
      <subjectIdentity>
        <resourceRef xlink:href="http://www.topicmaps.org" />
      </subjectIdentity>
      <baseName>
        <baseNameString>The Web-site of TopicMaps.Org</baseNameString>
      </baseName>
    </topic>
  </topicMap>
併合操作の後

  <topicMap>
    <topic id="t3">
      <subjectIdentity>
        <resourceRef xlink:href="http://www.topicmaps.org" />
      </subjectIdentity>
      <baseName>
        <baseNameString>TopicMaps.Org web-site</baseNameString>
      </baseName>
      <baseName>
        <baseNameString>The Web-site of TopicMaps.Org</baseNameString>
      </baseName>
     </topic>
  </topicMap>

例2 二つのトピックが少なくとも一つの共通の主題指示子URIをもつ場合

併合操作の前

  <topicMap>
    <topic id="t1">
      <subjectIdentity>
        <subjectIndicatorRef xlink:href="http://www.shakespeare.org/plays/hamlet.html" />
        <subjectIndicatorRef xlink:href="ftp://www.gutenberg.org/pub/gutenberg/etext97/1ws2610.txt" />
      </subjectIdentity>
      <baseName>
        <baseNameString>Hamlet</baseNameString>
      </baseName>
    </topic>

    <topic id="t2">
      <subjectIdentity>
        <subjectIndicatorRef xlink:href="http://www.shakespeare.org/plays/hamlet.html" />
      </subjectIdentity>
      <baseName>
        <baseNameString>The Tragedy of Hamlet, Prince of Denmark</baseNameString>
      </baseName>
    </topic>
  </topicMap>
併合操作の後

  <topicMap>
    <topic id="t3">
      <subjectIdentity>
        <subjectIndicatorRef xlink:href="http://www.shakespeare.org/plays/hamlet.html" />
        <subjectIndicatorRef xlink:href="ftp://www.gutenberg.org/pub/gutenberg/etext97/1ws2610.txt" />
      </subjectIdentity>
      <baseName>
        <baseNameString>Hamlet</baseNameString>
      </baseName>
      <baseName>
        <baseNameString>The Tragedy of Hamlet, Prince of Denmark</baseNameString>
      </baseName>
    </topic>
  </topicMap>

F.5.3 トピック名前付け制約に基づく併合

事前条件

次のとおりに,トピックマップM の中に,二つのトピックA 及びB が存在する。

a) トピックA は,有効範囲S1 の中で,基底名文字列B1 をもつ。
b) トピックB は,有効範囲S2 の中で,基底名文字列B2 をもつ。
c) 有効範囲の等価性原理に従って,有効範囲S1 は,有効範囲S2 に等しい。
d) 文字列の等価性原理に従って,基底名文字列B1 は,基底名文字列B2 に等しい。

事後条件

a) トピック併合操作に従って,T1 及びT2 が,併合される。

備考 有効範囲S1 及びS2 は,制約なしの有効範囲であってもよい。

例1 制約なしの有効範囲の中でのトピック名前付け制約による併合

併合操作の前

  <topic id="t1">
    <baseName>
      <baseNameString>Hamlet, Prince of Denmark</baseNameString>
    </baseName>
  </topic>

  <topic id="t2">
    <baseName>
      <baseNameString>Hamlet, Prince of Denmark</baseNameString>
    </baseName>
  </topic>
併合操作の後

  <topic id="t3">
    <baseName>
      <baseNameString>Hamlet, Prince of Denmark</baseNameString>
    </baseName>
  </topic>

例2 有効範囲の中でのトピック名前付け制約による併合

併合操作の前

  <topicMap>
   <topic id="t1">
    <baseName>
     <scope>
      <topicRef xlink:href="#shakespearean-tragedy" />
     </scope>
     <baseNameString>Hamlet, Prince of Denmark</baseNameString>
    </baseName>
   </topic>

   <topic id="t2">
    <baseName>
     <scope>
      <topicRef xlink:href="#shakespearean-tragedy" />
     </scope>
     <baseNameString>Hamlet, Prince of Denmark</baseNameString>
    </baseName>
   </topic>
  </topicMap>
併合操作の後

  <topicMap>
    <topic id="t3">
      <baseName>
        <scope>
          <topicRef xlink:href="#shakespearean-tragedy" />
        </scope>
        <baseNameString>Hamlet, Prince of Denmark</baseNameString>
      </baseName>
    </topic>
  </topicMap>

F.5.4 明示的なトピックマップの併合

事前条件

a) <mergeMap>要素は,トピックマップ文書D を参照するトピックマップM の中で処理される。
b) <mergeMap>要素は,子要素によって主題の集合S への参照を含んでいる。

事後条件

a) D の中のすべてのトピック及び関連は,トピックマップに追加される。D に起源をもつすべての基底名,出現及び関連役割の有効範囲は,元の有効範囲及び集合S の中の主題の集合の合併として表現される。

F.5.5 暗黙的なトピックマップの併合

事前条件

a) <topicRef>は,処理される。
b) 処理済み<topicRef>は,未処理のトピックマップ,M,の中のトピックを参照する。
c) 応用は,<topicRef>をその参照されたトピックに解決することを選択する。

事後条件

a) M の中のすべてのトピック及び関連は,トピックマップに追加され,付加的な併合及び重複抑制が発生してもよい。

備考 M の中の任意のmerge map指令は,明示的なトピックマップ併合規則に従って処理される。

F.6 重複抑制

F.6.1 主題指示子の重複抑制

事前条件

a) トピックA は,主題指示子,U1 及びU2,への二つのURI参照とともに,トピックマップM の中に存在する。
b) URIの等価性原理に従って,U1は,U2に等しい。

事後条件

U2 によって指定された主題指示子への参照は,A から削除される。

重複抑制の前

  <topic id="t1">
    <subjectIdentity>
      <subjectIndicatorRef xlink:href="http://www.elsinor.dk/hamlet.html" />
      <subjectIndicatorRef xlink:href="http://www.elsinor.dk/hamlet.html" />
    </subjectIdentity>
  </topic>
重複抑制の後

  <topicMap>
    <topic id="t1">
      <subjectIdentity>
        <subjectIndicatorRef xlink:href="http://www.elsinor.dk/hamlet.html" />
      </subjectIdentity>
    </topic>
  </topicMap>

F.6.2 トピック名の重複抑制

事前条件

a) トピックA は,有効範囲S1 に中で基底名文字列N1 を含む基底名B1,及び有効範囲S2 に中で基底名文字列N2 を含む基底名B2とともに,トピックマップM の中に存在する。
b) 文字列の等価性原理が定義するとおりに,N1 は,N2 に等しい。
c) 有効範囲の等価性原理が定義するとおりに,S1 は,S2 に等しい。

事後条件

a) S1 と等しい有効範囲の中に,N1 と等しい基底名文字列を含む基底名B3 が生成される。
b) B1 のすべての異形は,B3 に追加される。
c) B2 のすべての異形は,B3 に追加される。
d) B3 は,A の名前の集合に追加される。
e) B1 及びB2 は,もはや存在しない。

F.6.3 関連の重複抑制

事前条件

a) トピックマップは,二つの関連,A1 及びA2,を含む。
b) 関連の等価性原理が定義するとおりに,A1 は,A2 に等しい。

事後条件

a) A2 は,トピックマップから削除される。

重複抑制の前

  <topicMap>
    <!-- definition of required topics
    ...
    -->
    <association id="a34">
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#gdm" />
        <topicRef xlink:href="#ctb" />
      </member>
    </association>

    <association id="a35">
     <member>
       <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
       <topicRef xlink:href="#gdm" />
       <topicRef xlink:href="#ctb" />
     </member>
    </association>
  </topicMap>
重複抑制の後

  <topicMap>
    <!-- definition of required topics
    ...
    -->
    <association id="a34">
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#gdm" />
        <topicRef xlink:href="#ctb" />
      </member>
    </association>
  </topicMap>

F.6.4 役割を演じるものの重複抑制

事前条件

a) 関連A は,メンバM1 及びM2 をもつ。
b) M1 及びM2 は,役割を定義するトピックとして,同じトピックRT を参照する。
c) M1 及びM2 は,役割を演じるトピックとして,同じトピックRPT を参照する。

事後条件

a) M2 は,関連A から削除される。

重複抑制の前

  <topicMap>
    <!-- definition of required topics
    ...
    -->
    <association id="a34">
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#gdm" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#gdm" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#ctb" />
      </member>
    </association>
  </topicMap>
重複抑制の後

  <topicMap>
    <!-- definition of required topics
    ...
    -->
    <association id="a34">
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#gdm" />
      </member>
      <member>
        <roleSpec><topicRef xlink:href="#brother" /></roleSpec>
        <topicRef xlink:href="#ctb" />
      </member>
    </association>
  </topicMap>