18 素性構造

Contents

素性構造とは,素性を特定したり,束ねたりする,汎用のデータ構造 をつくる要素である. 各素性により,名前と複数の値が関連づけられている. 素性構造は,汎用の要素であることから,各種の情報を記録するため に使われる. その中でも有用な用途は,言語学的な分析を記録することである. とりわけ,分析が部分的である,未定の状態においては有効である. 素性構造は,様々な情報を断片の関連を記録するものである. また,分析や解釈向けの汎用の表現方法となる「メタ言語」としての 機能も果たすことができる. さらに,素性構造では,素性に特定の型を付与することが可能で,ま た「素性システム宣言」を使うと,その素性の値に制約を付与するこ ともできる. 72

18.1 本章の構成

この章は,次のような構成になっている. 18.2 素性構造と2値の素性値では,要素fsと要素fを解説する. これらの要素は,それぞれ,素性構造と素性を記録するものである. また,これと共に使用される2値の素性値について解説する. 18.3 その他の素性値で は,記号,数値,文字列といった,原始データ型を記録する要 素について解説する. 18.4 素性ライブラリと素性値ライブラリでは, 素性や素性値をまとめて規定してある「ライブラリ」について,そ の参照法と共に解説する. 18.5 複数の値から成る素性構造では,複雑な値,と りわけ,素性構造そのものが素性値となる場合,つまり,素性構 造が入れ子化する場合について解説する. 18.7 複数の値から成るコレクションでは,また 別な複雑な値,とりわけ,素性値が,集合や,バッグ,リストと いったコレクションを構成している場合について解説する. 18.8 素性値の表現では,素性 値の選択,否定,まとまりを示す方法を解説する. 18.9 規定値では,既定値,不定値などの表現の仕方を解説する. 18.10 テキストと分析の関連づけでは,分析と, 符号化されたテキストとの関連づけの方法について解説する. 18.11 素性システム宣言では,タイプ付けられた 素性構造の妥当性を検証する際に使われる情報となる「素性シス テム宣言」について解説する. ここで使われる要素の形式的な定義については, 18.12 形式的定義と用法で解説する.

18.2 素性構造と2値の素性値

素性構造で使われる主たる要素は,素性名-素性値の組を示す要素 fと, これら素性名-素性値の組が構成する構造を示す要素fsである. 要素fsは, 選択的に属性typeを取り,当該素性構 造の型を示すことができる. また,複数の要素fを内容として取ることができる. 要素fは,必 須の属性nameを取ることになる. また,選択的に属性valueを取ることができる. この属性値には,例えば,2値,数値,記号(すなわち,規定された 値集合から選ばれたもの),文字列,これらのコレクション,例え ば,リストなどを取ることができる. さらに,これらの複合的なもの,例えば,素性構造自体が値とな り,入れ子構造となるものも取ることができる. また,値の特定値,既定値は複数の方法で定義することができる. これらの詳細は,以下にある節で解説する.

素性,すなわち,素性名-素性値の組による記録は(素性構造の記録 も含めて),XML文書のどの場所でも使うことが可能である. また,特定の目的に向け用意された素性名-素性値を「ライブラリ」 としてまとめることも可能である. ライブラリの構成要素は,別の場所にある,素性名-素性値の記録 から,属性featsまたは属性fValにより,参照される.

まずはじめに,2値の素性値を含む素性の例を見てみる. 以下にある3つの要素は,素性構造を記録するために必要なもので ある.
  • fs 素性構造を示す.すなわち,構造単位となる素性名-素性値の 組の集合.
    type 当該素性構造の種類を示す.
    feats 当該素性構造を構成する素性定義を参照する.
  • f 素性値定義を示す.すなわち,素性名とその様々な値を示す.
    name 当該素性の名前を示す.
    fVal 素性値を表す要素を参照する.
  • binary/ 2値として,素性値を示す.
属性featsと属性fValについては,本節では扱わない. これらの属性は,要素内容を示す,別の手法を提供するためのもの である. これらの詳細は,18.4 素性ライブラリと素性値ライブラリで解説 する.
2値を示す要素fを伴う要素fsでは,素性名-素性値の行列を示すものとして 使われる. 例えば,以下は,英語の音声[s]について示すものである.
参考文献
+--- ---+
| consonantal + |
| vocalic - |
| voiced - |
| anterior + |
| coronal + |
| continuant + |
| strident + |
+--- ---+
これは,XMLで次のように書くことができる.
<fs type="phonological_segments">
 <f name="consonantal">
  <binary value="true"/>
 </f>
 <f name="vocalic">
  <binary value="false"/>
 </f>
 <f name="voiced">
  <binary value="false"/>
 </f>
 <f name="anterior">
  <binary value="true"/>
 </f>
 <f name="coronal">
  <binary value="true"/>
 </f>
 <f name="continuant">
  <binary value="true"/>
 </f>
 <f name="strident">
  <binary value="true"/>
 </f>
</fs>
要素fsが, 選択的に属性typeを取り,各種の素性 を示していることに注意して欲しい. また,要素f は,必須の属性nameを取り,当該素性 の名前を示している点にも注意して欲しい. 素性構造では,型の付与は必須ではない. しかし,素性は,必ず名前を持つ必要がある. 同様に,要素fsは空要素も可能であるが,要素fは,要素内容 (または参照)を持つ必要がある.

ある素性がある型の素性値を取るといった制約(例えば,stridentは2値をとる制約)を実現する には,付加的な検証が必要となる. これは,ある型を持つ素性構造にある素性に対する制約(例えば, 音声の型となる素性構造では,素性voicedが必須となる制約)でも同様である. このような制約は,文書レベルで特定の処理を施したり,スキーマ レベルで付加的な検証規則を使ったり,宣言レベルで,18.11 素性システム宣言 で解説する付加的な「素性構造宣言」をつかったりすること で,実現される.

今まで「2値」という用語を使ってきたが,これをXMLで記述すると きには,truefalse(または,10)と表現される 但し,この値は,命題レベルの宣言のみに限定されて付与されるも のではないことに注意して欲しい. 例えば,先の例のような2値の素性でも使うことができる.

18.3 その他の素性値

素性は,2値以外の,原始的な値を取ることもできる. この節では,記号,数値,文字列を示す要素を紹介する. この節で解説されるモジュールでは,必要であれば, クラスmodel.featureVal.singleにより, 付加的なデータ型を使うことができる. このクラスを使う場合,W3Cの基本データ型のみを使うことが推奨 される. 複雑なデータ型では,素性構造を使うことが推奨される.
  • symbol/ 記号リスト中のいち項目を含む素性値規定のうち,値の部分を示す.
    value 当該組成の記号値を示す.素性宣言のリスト中にあるいち項目になる.
  • numeric/ 素性値定義における値を示す.
  • string 素性値規定において,値として文字列をとる値の部分を示す.
要素symbolは,素性の値が,文字列で表現 される,一連の値である場合に使われる. 例えば,以下の例では,ラテン語の名詞である「mensas(tables)」が,対格,女性,複 数の語形であることを示している.
<fs>
 <f name="case">
  <symbol value="accusative"/>
 </f>
 <f name="gender">
  <symbol value="feminine"/>
 </f>
 <f name="number">
  <symbol value="plural"/>
 </f>
</fs>
より正確に言えば,これは,3つの素性(すなわち,格,性,数)に より,単語の形態統語的特徴が決まることを示している. 各素性では,複数の値(例えば,主格,属格,与格,対格)の中から ひとつを選ぶことが可能で,このような値を要素symbolで表現して いる. 但し,ここでは,文法的な数を記号として表現しているが,これを singularまたは pluralの2値として,以下のよ うにすることも可能であることに注意して欲しい.
<fs>
 <f name="case">
  <symbol value="accusative"/>
 </f>
 <f name="gender">
  <symbol value="feminine"/>
 </f>
 <f name="singular">
  <binary value="false"/>
 </f>
</fs>
値の表現として,2値を使うか記号を使うかは,好みの問題である.
要素stringは,素性値が,大変長い,または大 きさに限りがないようなものから取り出された文字列である場合 で,要素symbolでは対応が 困難または不可能な場合に,使われるものである. 値としての文字列は,要素stringの,属性値ではなく,要素内容とし て記録される. 例えば,住所を次のように記録することができる.
<fs>
 <f name="address">
  <string>3418 East Third Street</string>
 </f>
</fs>
要素numericは,素性値が数値 または数値による範囲である場合に使われる. 例えば,以下では,家の番号と通りの名前を,異なる素性で記録し ている.
<fs>
 <f name="houseNumber">
  <numeric value="3418"/>
 </f>
 <f name="streetName">
  <string>East Third Street</string>
 </f>
</fs>
数値を,ある特定の範囲(例えば,住所番号の範囲)にあるものとし て記録するときには,属性maxを使い, その上限を示すことができる.
<fs>
 <f name="houseNumber">
  <numeric value="3418max="3440"/>
 </f>
 <f name="streetName">
  <string>East Third Street</string>
 </f>
</fs>
また,数値を丸めること(または丸めてはいけないこと)を示すこと もできる. 例えば,ある住所の一日の降水量をミリメートルで記録する場合, 以下のようにすることができる.
<fs>
 <f name="dailyRainFall">
  <numeric value="0.0max="1.3trunc="false"/>
 </f>
</fs>
ここでは,0から1.3の間にある無限個の数値を表現している. それに対して,以下の例では,
<fs>
 <f name="dailyRainFall">
  <numeric value="0.0max="1.3trunc="true"/>
 </f>
</fs>
0と1の,2つの数値のみが可能であることを示している.

先にも示したように,ある素性が特定の値を取るようにするには, 付加的な処理が必要となる. 例えば,素性singularには symbol value="feminine"/という値は 取らないとような場合である. これを実現するには2つの方法がある. ひとつは,取り得る値の集合が小さい場合に使われるもので,「素 性ライブラリ」として知られる素性のリストを使うものである. これは,要素fsに,実データを直接記録するのではなく, 属性feats を付与し,そこにリストへの参照を記録することで実現する. この手法は,先に示した例では,大変有効である. なぜなら,先の例(訳注:名詞形の例)では,素性名-素性値の組み 合わせは10(5 + 3 + 2)にもなるからである. 同様に,ある素性構造では,特定の素性名-素性値の組み合わせの みを取るようにするには,「素性値ライブラリ」を使い,正しい全 ての素性構造をまとめて定義しておくことができる(素性構造は, 素性の値をまとめたものであるから,この名前が使われている). 計30(5 × 3× 2)もの素性構造の組み合わせにより,先の例にあ る,格,性,数の全ての組み合わせを定義することが可能となる. これら2つのライブラリについては,18.4 素性ライブラリと素性値ライブラリで解説 する.

しかしながら,特定の素性名-素性値の組み合わせをとるようにす る,もっとも一般的な方法は,18.11 素性システム宣言で解説する素性システム宣言を使 うことである.

18.4 素性ライブラリと素性値ライブラリ

先の節にある,素性構造を直接記述している例は,記述が冗長になっ ているともいえる. ある素性名-素性値の組み合わせや,これらを束ねたある素性構造 が,異なる分析においても,再利用されることもよくあることであ る. このような,素性構造の記述の量や複雑さを減らす為には, 要素fsに属 性featsを付与して,そこから,複数の素 性名-素性値を参照するという方法がある. このような,間接的に素性構造を記述する方法を使うには, 要素fの属性 xml:idにユニークな属性値を与え,こ れらを要素fLib(素性ライブラリ)でまとめることにな る. また同様に,要素fvLib(素性値ライブラリ)の中に,素 性値をまとめておくこともできる. ある素性が,その値として素性構造を採る場合,またはライブラリ を使い値を定義する場合には,属性fValを使い,続く節にあるよう,これらを参 照することになる. 以下の要素は,素性ライブラリや素性値ライブラリを示すものであ る.
  • fLib 素性に関する要素のライブラリをまとめる.
  • fvLib 再利用が可能な素性値をライブラリとしてまとめる.
例えば,素性ライブラリを使い,音声の素性を定義すると,以下の ようになる.
<fLib n="phonological features">
 <f xml:id="CNS1name="consonantal">
  <binary value="true"/>
 </f>
 <f xml:id="CNS0name="consonantal">
  <binary value="false"/>
 </f>
 <f xml:id="VOC1name="vocalic">
  <binary value="true"/>
 </f>
 <f xml:id="VOC0name="vocalic">
  <binary value="false"/>
 </f>
 <f xml:id="VOI1name="voiced">
  <binary value="true"/>
 </f>
 <f xml:id="VOI0name="voiced">
  <binary value="false"/>
 </f>
 <f xml:id="ANT1name="anterior">
  <binary value="true"/>
 </f>
 <f xml:id="ANT0name="anterior">
  <binary value="false"/>
 </f>
 <f xml:id="COR1name="coronal">
  <binary value="true"/>
 </f>
 <f xml:id="COR0name="coronal">
  <binary value="false"/>
 </f>
 <f xml:id="CNT1name="continuant">
  <binary value="true"/>
 </f>
 <f xml:id="CNT0name="continuant">
  <binary value="false"/>
 </f>
 <f xml:id="STR1name="strident">
  <binary value="true"/>
 </f>
 <f xml:id="STR0name="strident">
  <binary value="false"/>
 </f>
<!-- ... -->
</fLib>
これを使い,例えば,英語の音素/t/, /d/, /s/, /z/の分析を,素性構造で記録すると,以下のようになる.
<fs
  feats="#CNS1 #VOC0 #VOI0 #ANT1 #COR1 #CNT0 #STR0"/>

<fs
  feats="#CNS1 #VOC0 #VOI1 #ANT1 #COR1 #CNT0 #STR0"/>

<fs
  feats="#CNS1 #VOC0 #VOI0 #ANT1 #COR1 #CNT1 #STR1"/>

<fs
  feats="#CNS1 #VOC0 #VOI1 #ANT1 #COR1 #CNT1 #STR1"/>
これは,2値を持つ7つの素性ライブラリで表現した音声の特徴であ る可能な128の組み合わせのうちの4つを示したものである. もちろん,可能な組み合わせが全て必要であるということではない (例えば,摩擦(strident)の母音(vowel)というものはない). しかし,可能な組み合わせをまとめて,それを要素fsを使い,素 性値ライブラリにまとめることが,例えば,以下のように可能であ る.
<fvLib xml:id="fsl1n="phonological segment definitions">
<!-- ... -->
 <fs
   xml:id="T.DF"
   feats="#CNS1 #VOC0 #VOI0 #ANT1 #COR1 #CNT0 #STR0"/>

 <fs
   xml:id="D.DF"
   feats="#CNS1 #VOC0 #VOI1 #ANT1 #COR1 #CNT0 #STR0"/>

 <fs
   xml:id="S.DF"
   feats="#CNS1 #VOC0 #VOI0 #ANT1 #COR1 #CNT1 #STR1"/>

 <fs
   xml:id="Z.DF"
   feats="#CNS1 #VOC0 #VOI1 #ANT1 #COR1 #CNT1 #STR1"/>

<!-- ... -->
</fvLib>
このように,一度定義しておけば,素性構造を再利用することが可 能となる. ある別の要素fが,属性fVal を使い,これを参照することができるようになる. 例えば,以下のように,素性名-素性値の組を示すことができる.
<f name="dental-fricativefVal="#T.DF"/>
ここでは,音声の素性を,階層構造を使い実際に記録するようなこ とはしていない.

このようにまとめられた素性構造は,アノテーションを拭かしたい テキスト部分とも関連づけることができる. これは,当該テキストからリンクを使う(例えば,要素linkを使う)ことで実現す る. この詳細は,18.10 テキストと分析の関連づけを参照のこと.

素性または素性構造が,この方法でリンク付けられる際には,当該 リンクの参照先にあるものがコピーされてくることになる点に注意 して欲しい. このようなリンクと「構造共有」とは区別する必要がある. 構造共有とは,あるアノテーション構造の一部が,当該構造の別の 場所で出現するものである. このようなアノテーションでは,18.6 参照される素性構造で解説する要素vLabelを使い,記録されるべきである.

18.5 複数の値から成る素性構造

素性は,原始的なデータ型に加えて,複数の値を取ることもできる. これを記録する一番簡単な方法は,要素fの内容として 要素fsを取 ることである. または,要素fsの識別子を,要素fの属性fValで 記録することである. これにより,素性構造は,いくらでも入れ子化することができる. 例えば,要素fsは,要素fを子要素として含むか参照することが 可能で,さらにその要素fは,別の要素fsを子要素として含むか参照することが可能で, さらにその要素fsは,別の要素fを子要素として含むか参照することが可 能で,これを続けることができる.

この使い方を解説するために,例えば,ある単語の語形,統語分 類,意味情報を構造としてまとめた場合を考えてみる. 単語の分析では,これら3つの素性を名前 surface,syntax, semanticsで示し, これを要素fs type='word'で記録するこ とができる. 以下にある例では,最初の素性は,文字列を素性値として取り,続 く2つの素性では,複数の値を束ねる素性構造をその素性値として いる. 入れ子化された素性構造には,型としてcategoryactが付与されている.
<fs type="word">
 <f name="surface">
  <string>love</string>
 </f>
 <f name="syntax">
  <fs type="category">
   <f name="pos">
    <symbol value="verb"/>
   </f>
   <f name="val">
    <symbol value="transitive"/>
   </f>
  </fs>
 </f>
 <f name="semantics">
  <fs type="act">
   <f name="rel">
    <symbol value="LOVE"/>
   </f>
  </fs>
 </f>
</fs>
この分析では,記号verbtransitiveについて は何も言及していない. そこで,これらの素性値を,素性構造で置き換えてしまうのはどう だろう. 例えば,これらの統語分類(N, V, ADJ, PREP)を素性値ラ イブラリとして定義するのである.
<fvLib n="Major category definitions">
<!-- ... -->
 <fs xml:id="Ntype="noun">
<!-- noun features defined here -->
 </fs>
 <fs xml:id="Vtype="verb">
<!-- verb features defined here -->
 </fs>
</fvLib>
素性値ライブラリにより,省略コード(N,Vなど)を 使い,対応する素性構造を参照することができるようになる. 実際の記述は,複数の要素fを束ねた要素fsとして記録 されている. また別の方法として,以下の例にあるよう,属性featsを使い,必要な素性を識別子で参照する 方法もある.
<!-- ... -->
<fs xml:id="ADJ" type="adjective" feats="#N1 #V1"/>
<fs xml:id="PREP" type="preposition" feats="#N0 #V0"/>
<!-- ... -->
このような,複数の素性構造にわたり素性を再利用する方法は,記 述を簡単にする本質的な手法となる. この例では,基本的な素性を定義する素性ライブラリが,例えば以下 のように,存在していることを前提としている(訳注:以下の例文 では,IDの値が間違っている.正しくは,それぞれ,N1, N0, V1, V0とな る.).
<fLib n="categorial features">
 <f xml:id="NN-1name="nominal">
  <binary value="true"/>
 </f>
 <f xml:id="NN-0name="nominal">
  <binary value="false"/>
 </f>
 <f xml:id="VV-1name="verbal">
  <binary value="true"/>
 </f>
 <f xml:id="VV-0name="verbal">
  <binary value="false"/>
 </f>
<!-- ... -->
</fLib>
このような素性ライブラリに加えて,もし,他動詞性や意味に関す る素性構造が既定されているとすれば,例えば,以下のような簡単 な記述も可能となる.
<fs type="word">
 <f name="surf">
  <string>love</string>
 </f>
 <f name="syntax">
  <fs type="category">
   <f name="posfVal="#V"/>
   <f name="valfVal="#TRNS"/>
  </fs>
 </f>
 <f name="semantics">
  <fs type="act">
   <f name="relfVal="#LOVE"/>
  </fs>
 </f>
</fs>

属性fValは,各種の素性値が参照可能 であるが,原始的なデータ型を参照することは推奨されない.

18.6 参照される素性構造

ある素性構造の複数箇所で,同じ素性値が使われることがある. この時,要素vLabelを使い,そのような箇所にラベルを 貼ることができる.
  • vLabel 素性構造中,複数箇所に現れる,素性値規定の値の部分を示す.
例えば,名詞と動詞の一致について,単独の素性構造で記録するこ とを考えてみる. この場合,例えば,数の一致に関する素性は,複数回出現すること になる. このように別の箇所にも同じ素性が(コピーではなく)出現するよう な記録は,以下のように書くことができる.
<fs xml:id="NVA">
 <f name="nominal">
  <fs>
   <f name="nm-num">
    <vLabel name="L1">
     <symbol value="singular"/>
    </vLabel>
   </f>
<!-- other nominal features -->
  </fs>
 </f>
 <f name="verbal">
  <fs>
   <f name="vb-num">
    <vLabel name="L1"/>
   </f>
  </fs>
<!-- other verbal features -->
 </f>
</fs>

この例では,vb-numnm-numという名前がつい た素性が,ある素性構造を共有している. 実際の素性値は,要素vLabelとして記録され,これは, 属性nameでラベル付けられている,あ る素性構造への参照を示している.

このように,ラベルで参照される値が有効となる範囲は,一番外側 の(訳注:「外側で一番近い」の誤りか)要素fs である. 素性構造が,素性値ライブラリから得られたり,または他の場所に あるものとして参照されている(例えば,属性fValを使う)場合, 共有される素性構造の名前は,名前の衝突を避けるために,その素 性構造の識別子が接辞として付いていると解釈される. 従って,例えば,別の素性構造が,上記例中にある要素fsを参照する 例として,以下の例を考えてみる.
<f name="classfVal="#NVA"/>
ここでは,例中にあるラベルの名前が,NVAL1のように解 釈されることになる.

18.7 複数の値から成るコレクション

複数の素性値は,常に素性構造として記録されるわけではない. 複数の値は,各種のデータ型である原始的な値を,集合,バック, リストとしてまとめることも可能である. 要素vCollは,この様な場合に使われる.
  • vColl 素性値規定において,複数の値を,集合,バック,リストなど で表す,値の部分を示す.

素性値が,集合,バック,リストとしてある場合,その値は0個以 上とることができる(従って,空集合,空バック,空リストも可能 となる). リストの各項目は,順序付きで,重複がある. 集合の各項目は,順序がなく,重複がない. バックの各項目は,順序がないが,重複はある. 集合とバックは,順序は問題とならないが,リストでは順序は問題 となる. また,集合は,重複が存在しないが,バックやリストでは重複が存 在する.

属性orgに属性値がない場合,要素vCollは, リストと解釈される. 要素vCollが空要素の場合,空リスト,空集合,空 バックのいずれかと解釈される.

属性orgの使い方を解説するために,例 えば,家系図を示す素性構造を考えてみる. 以下では,個人を素性構造で表現している.
<fs xml:id="p027type="person">
 <f name="forenames">
  <vColl>
   <string>Daniel</string>
   <string>Edouard</string>
  </vColl>
 </f>
 <f name="motherfVal="#p002"/>
 <f name="fatherfVal="#p009"/>
 <f name="birthDate">
  <fs type="datefeats="#y1988 #m04 #d17"/>
 </f>
 <f name="birthPlacefVal="#austintx"/>
 <f name="siblings">
  <vColl org="set">
   <fs copyOf="#pnb005"/>
   <fs copyOf="#prb001"/>
  </vColl>
 </f>
</fs>

この例では,要素vCollは,名(foremane)を構成する名前の 値をリストとして構成している. 他の素性は,参照として付与され,これらは外部の素性値ライブラ リで定義されているとしている(例中には書いていない). 例えば,兄弟(siblings)を示している要素vCollは, 各値を,リストではなく,集合として示している. 兄弟は,素性構造として記録され,その素性構造は,素性値ライブ ラリとして定義されている値のコピーとして記録されている.

ある特定の素性が,ひとつの素性構造のみから成り,それを集合か バックかリストとして扱う場合には,要素fsを使うこと なく,要素vCollを使う方が便利である. 例えば,以下の例では,英語の動詞sinksを記録したもので,素性agreementの値として素性構造が付与さ れ,そこには,素性personnumberが記録されている.
<fs type="word">
 <f name="category">
  <symbol value="verb"/>
 </f>
 <f name="tense">
  <symbol value="present"/>
 </f>
 <f name="agreement">
  <fs>
   <f name="person">
    <symbol value="third"/>
   </f>
   <f name="number">
    <symbol value="singular"/>
   </f>
  </fs>
 </f>
</fs>
素性agreementにある素性の 名前が重要でない場合,例えば,以下のように簡単に記録することができる.
<fs type="word">
 <f name="word.oddss">
  <symbol value="verb"/>
 </f>
 <f name="tense">
  <symbol value="present"/>
 </f>
 <f name="agreement">
  <vColl org="set">
   <symbol value="third"/>
   <symbol value="singular"/>
  </vColl>
 </f>
</fs>
このように,要素vCollは,複数の要素を持つ分析の際に便 利に使うことができる. 以下の例では,フランス語のauxquelsには,2つの分析が可能である ことを,リストで表現したものである. 1つめのリスト項目は,当該単語の前置詞を示し,2つ目のリスト項 目は,男性,複数,比較形の代名詞であることが示されている.
<fs>
 <f name="lex">
  <symbol value="auxquels"/>
 </f>
 <f name="maf">
  <vColl org="list">
   <fs>
    <f name="cat">
     <symbol value="prep"/>
    </f>
   </fs>
   <fs>
    <f name="cat">
     <symbol value="pronoun"/>
    </f>
    <f name="kind">
     <symbol value="rel"/>
    </f>
    <f name="num">
     <symbol value="pl"/>
    </f>
    <f name="gender">
     <symbol value="masc"/>
    </f>
   </fs>
  </vColl>
 </f>
</fs>

内容を持たない集合やバックやリストは,null(空)集合,null(空) バック,null(空)リストとされる. 要素vCollに要素内容がなく,その属性featsにも値がない場合,属性orgに従い,空集合,空バック,空リストと解 釈される.

例えば,識別子p027を持つ素性構造により個人が記録さ れ,その人には兄弟がいない場合,素性siblingsを以下のようにすることがで きる.
<f name="siblings">
 <vColl org="set"/>
</f>

要素vCollは, 例えば,集合の要素が集合であったり,2つのリストを束ねたりす る際には,複数の要素vCollをま とめることができる. このような場合,外側のコレクションでは,入れ子化された要素vCollの内 容には関与しないことに注意して欲しい. もし2つの集合の連接を作りたいのであれば,次節で解説する要素 vMerge を使い,新しいコレクションを作ることになる.

18.8 素性値の表現

素性値を,ある値に対して何らかの演算を施した結果(例え ば,「緑ではない」「男性または女性」または,2つのコレクショ ンの連接など)として扱いたい時もある. このような目的のために,選択,否定,まとめの働きをする,3つ の要素が用意されている.
  • vAlt 素性値規定において,妥当なひとつの値を表す,値の部分を示す.
  • vNot 当該要素の内容の否定する素性値を示す.
  • vMerge 属性orgで示された構造を使い,子要素が持つ値とマージした 結果得られた素性値を示す.

18.8.1 選択値

要素vAltは,素性値が記録できるところで使 うことができる. 複数の素性値を取ることが可能で,それらの中から必要な値を選 択することになる. 例えば,住まいの特性を記録する素性システムを想定し,そこで 素性number.of.bathroomsを記 録するとしよう. この時,家には2つまたは3つの浴室があるのか,確定していない 状況を考えてみる. これを,先の要素を使い,最大数を示すことで,次のように記録 することができる.
<f name="number.of.bathrooms">
 <numeric value="2max="3"/>
</f>
もう少し一般的な,良い方法として,以下のように,選択肢を明 示する方法もある.
<f name="number.of.bathrooms">
 <vAlt>
  <numeric value="2"/>
  <numeric value="3"/>
 </vAlt>
</f>
要素vAltは,素性名-素性値の組ではなく, 素性値の選択を示すことができ 従って,例えば,不確定である素性が複数ある場合には,各素性 値は素性構造として記録される必要がある. なぜならば,素性構造は,常に,値を記録するところで使われる からである. 例えば,先に示した住宅で,2つの浴室があるのか,それとも2つ の寝室があるのか,はっきりとしない場合,以下のように記録す ることができる.
<f name="rooms">
 <vAlt>
  <fs>
   <f name="number.of.bathrooms">
    <numeric value="2"/>
   </f>
  </fs>
  <fs>
   <f name="number.of.bedrooms">
    <numeric value="2"/>
   </f>
  </fs>
 </vAlt>
</f>
このような選択はつねに,排他的であることに注意して欲しい. 例えば,上例の場合,2つの浴室がある場合には,2つの寝室があ るケースは除外されることになり,逆の場合もそうである. もし排他的でない選択を定義する際には,要素vCollを,以 下のように使うことになる.
<f name="rooms">
 <vAlt>
  <fs>
   <f name="number.of.bathrooms">
    <numeric value="2"/>
   </f>
  </fs>
  <fs>
   <f name="number.of.bedrooms">
    <numeric value="2"/>
   </f>
  </fs>
  <vColl>
   <fs>
    <f name="number.of.bathrooms">
     <numeric value="2"/>
    </f>
   </fs>
   <fs>
    <f name="number.of.bedrooms">
     <numeric value="2"/>
    </f>
   </fs>
  </vColl>
 </vAlt>
</f>
これにより,当該住宅には,2つの浴室がある,2つの寝室があ る,または,2つの浴室と2つの寝室が同時にあるという3つの可 能性が示される.
この例のように,要素vAltは,集合,バック,リストとしてま とめられた素性から,値を選択するために使われる. 素性selling.pointsにより,物件の価値を高めようと,例 えば,プール付きとか景色がよいなどの値を記録することを考え てみる. 具体的には,営業ポイントとして,警備システムや,景色がよい こと,プールまたはジャグジー(両方は付いていない)があること を,リストにしてみる. これは,要素vAltを使い,次のように書くことができ る.
<fs type="real_estate_listing">
 <f name="selling.points">
  <vColl org="set">
   <string>alarm system</string>
   <string>good view</string>
   <vAlt>
    <string>pool</string>
    <string>jacuzzi</string>
   </vAlt>
  </vColl>
 </f>
</fs>
また,この記述を元に,警報システムと景色がよいことのどちら があるのか分からないケースを,以下のように示すことができる.
<fs type="real_estate_listing">
 <f name="selling.points">
  <vColl org="set">
   <vAlt>
    <string>alarm system</string>
    <string>good view</string>
   </vAlt>
   <vAlt>
    <string>pool</string>
    <string>jacuzzi</string>
   </vAlt>
  </vColl>
 </f>
</fs>

もし,比較的少数の素性とその値から構成されるが,不明な点が 多くあり,但しそれを明示する必要がある場合,要素vAltを使うのではなく,要素altを使い,スタンドオ フスタイルで記録することが推奨される.

18.8.2 否定

要素vNotは,素性値が記録できるところで使 うことができる. この要素は,各種の素性値を取ることが可能で,その補の値を表 現する. 例えば,以下の例にある素性number.of.bathroomsは,2以外の数 値を示している.
<f name="number.of.bathrooms">
 <vNot>
  <numeric value="2"/>
 </vNot>
</f>
厳密に言えば,要素vNotは,,素性値として持つ値の,否 定ではなく,その補の値を表現している. 関連する素性が取り得る値を定義する素性システム宣言を使うこ とが可能であれば,ここで否定される値に関する詳細を記録す ることができる. 例えば,素性caseで使用可能な値が,主格(nominative),属格(genitive),与 格(dative),対格(accusative)のいずれかであり,それがTEI素性システム宣言かその 他の方法で記録されているとする. この時,以下にある2つの記述は,同値となる.
(i)
<f name="case">
 <vNot>
  <symbol value="genitive"/>
 </vNot>
</f>
(ii)
<f name="case">
 <vAlt>
  <symbol value="nominative"/>
  <symbol value="dative"/>
  <symbol value="accusative"/>
 </vAlt>
</f>

しかし,この様な素性システム宣言が使えない場合には,素性値 が否定されていることは,当該値以外のものが可能であることを 示すのみとなる.

素性値は否定することがかのうであるが,素性値-素性名の組は 否定することができない. 終端にある値が否定されることにより,当該値以外の値が,その 素性値となりうることが示される.

否定される値は,各種ものもがあり,これには(要素vCollで 示される)コレクションや,(要素fsで示される)素性構造も含まれる. このような複雑な値の否定では,提示されていない値の集合が示 されていると解釈される. 従って,例えば,素性構造Fを否定した場合,これは,素性構造F には出現していない素性構造の集合を示すものと判断される. 素性システム宣言のような,制約を示す仕組みが使えない場合, このようなコレクションの否定は,そこに示されていない,種類 も値も異なる複数の値を示すことになる. 従って,一般には,否定される値の構成と同じ構成を持つ値を示 すときに,これらは有効な手段となる. 例えば,ある集合の否定は,当該集合の補集合であると解釈する 場合である. 但し,この場合においても,何らかの制約を示す仕組みがなけれ ば,効果を発揮しない.

18.8.3 値のまとまり

要素vMergeは,素性値が記録できるところで 使うことができる. 複数の素性値を取ることが可能で,これらをまとめる働きがある. 値のまとめ方は,属性orgで示される. この属性値が示す内容は,まとまりを構成する値のまとまりかた と同じである必要はない. 例えば,集合をリストとしてまとめたり,その逆も可能である.

例として,ある言語における素性gendersの取り得る値の範囲を記述 する場合を考えてみる. この場合,以下のように,可能な値を,要素vColl を使い,集合として記録することができる.
<fs>
 <f name="genders">
  <vColl org="set">
   <symbol value="masculine"/>
   <symbol value="feminine"/>
  </vColl>
 </f>
</fs>
さらに,ある言語では,新しい素性値を取り得ることが分かった ので,素性の値を集合ではなく,リストとして扱いたいと考えた としよう. この場合,要素vMergeにより,以下のように記録することがで きる.
<fs>
 <f name="genders">
  <vMerge org="list">
   <vColl org="set">
    <symbol value="masculine"/>
    <symbol value="feminine"/>
   </vColl>
   <symbol value="neuter"/>
  </vMerge>
 </f>
</fs>

18.9 規定値

素性値は,多くの方法で示される. 素性値は,null値や,不明,範囲が不詳なもの,否定値なども可能である. これまでに見てきた,素性値の取り得る範囲を示す方法は,現 行のガイドラインが推奨するものではない. TEIスキームでは,これらの情報は全て,素性システム宣言で記録 されることになる. 素性システム宣言,または同種の方法により,ある要素が取り得る 値の範囲は(例えば)男性形,女性形,中性形であり,既定値は中性 形である,ということを定義することができる. これにより,ある素性の既定値を示すことができる. 以下の要素は,このために使われるものである.
  • default/ 素性値定義の既定値を示す.
属性fValも持たない空要素fなどは,この 要素を使う典型例である. 例えば,素性システム宣言が,先の述べたように既に記録されてい るのであれば,以下にある2つの記述は同値となる.
<f name="gender"/>
<f name="gender">
 <vAlt>
  <symbol value="feminine"/>
  <symbol value="masculine"/>
  <symbol value="neuter"/>
 </vAlt>
</f>
また,要素defaultにより,その既定値が明示され ている場合には,以下にある2つの記述は同値となる.
<f name="gender">
 <default/>
</f>
<f name="gender">
 <symbol value="neuter"/>
</f>
また,既定値の否定が示されている場合には,以下の2つの記述は 同値となる.
<f name="gender">
 <vNot>
  <default/>
 </vNot>
</f>
<f name="gender">
 <vAlt>
  <symbol value="feminine"/>
  <symbol value="masculine"/>
 </vAlt>
</f>

18.11 素性システム宣言

素性システム宣言(FSD)は,(素性構造を示す)要素fsが使われて いるTEI準拠のテキストで使われる. 素性システム宣言(FSD)には,3つの使用目的がある.
  • 素性名と素性値の全てをリスト化する.また,それらに関する 散文による解説を付与する.
  • 型付き素性論理に従い,整形式の素性構造に加えて,妥当な素 性構造に対する制約を定義する. この制約には,素性値の取り得る範囲の指定や,素性が所属す る素性構造の型や,特定の素性名-素性値とは共起しない制約 などがある.
  • このような制約を使い,特定の素性構造に対して,意図する解 釈を定義することができる. また,このような制約には,素性値が付与されていないものに 対する(実値または計算による)既定値の定義も含まれる.

この節で解説するスキームは,素性構造システムを記録するための ものである. 但し,本節の内容は,ISOの規格ISO 24610-1:2006で定義されてい る,素性構造を示すためものになっている. 素性構造については,本章でもある18 素性構造で解説されている (訳注:この章の内容は,ISO 24610として規格化された.この時, この節までの内容は,ISO 24610-1として,この節の内容はISO 24610-2として分冊化された.内容を共有した影響で,文章の一部 に,編集上の混乱が生じた所がある). この章(訳注:正しくは,本節)の内容は,ISOの規格中にある,形 式的な定義を基にするもので,それを修正するものではない. もし,本節の内容に曖昧または不明な点があれば,ISOの規格を参 照すべきである.

素性システム宣言(FSD)は,XMLデータ中で使われている素性構造の 構文に,どのような意味があるのかについて,記述する機能を提供 している. また,素性システム宣言(FSD)は,テキスト中にある素性構造の妥 当性をソフトウェアが検証し,その内容を解釈する際に使う推論規 則を規定する働きもある.

本節の中で使われる用語は,形式論理学で一般的に使われているも のとは異なることに注意して欲しい. また,言語学で使われているタイプ付き素性構造とも,異なる点に も注意して欲しい. とりわけ,「解釈」という用語が素性構造に使われたとき,それは モデル理論でいう解釈とは異なるものである. この場合の「解釈」とは,素性システム宣言(FSD)で宣言された制 約に従う素性構造に付加される程度の意味内容を持つものである. 言語学で使われる素性構造に課される制約とは,自然言語の文法を 記述する,第一の手法である. その様な言語学で使われるモデル理論における素性構造の解釈は, 本節で扱う制約とは,全く異なるものである. ちなみに,解釈に関する形式定義については,本ガイドラインでは 扱わない. 同様に,本ガイドラインで使われる,整形式の一部を示す「妥当 (valid)」という用語についても,これはタイプ付き素性構造にお ける文法を示すもので,本節における「整形式」とは,とは異なる ものである.???? 形式意味論にある概念を借用することなない.

まずはじめに,符号化テキストを,複数の素性システム宣言と関連 付ける手法を解説する. 次に,素性システムの全体像を示し,続いて,それらの記録方法の 詳細を解説する. 最後に,詳細な例を提示する. 素性システム宣言の必要性についてや,完全な例示については,Langendoen and Simons (1995)を参照のこと.

18.11.1 TEIテキストと素性システム宣言

ソフトウェアが,素性システム宣言を使い,テキストを自動的に 解釈したり,人が,素性システムを定義している宣言を見つける ためには,符号化テキスト中には,素性システム宣言へのリンク がなくてはならない. しかし,素性システムの文法自体を宣言するスキーマは,その応 用である素性構造のスキームとは,厳密に分けるべきである.

タイプ付き素性構造をもつテキストには,その素性構造を定義す る素性システム宣言を記録することができる. 素性システム宣言のより一般的な使用法は,同じ素性システム宣 言(またはその一部)を複数のテキストで共有することである. この場合,素性構造の各タイプは,要素fsDecl で記録する必要がある. 素性のタイプは,素性構造にある属性typeで示されている.

この章で解説するモジュールがXMLスキーマ中で定義されている 場合には,以下の要素を使うことができる.
  • fsdDecl ひとつ以上の素性構造宣言または素性構造宣言へのリンクを含む,素性システム宣言を示す.
  • fsdLink/ 素性構造宣言により素性構造の名前を示す.
  • fsDecl ひとつの素性構造を宣言する.
要素fsdDeclは,TEI文書のヘダー,または, 独立したファイル中に記録される. その子要素には,複数の要素fsdLinkまたはfsDecl を取ることになる.

要素fsDeclは,属性xml:idの値として,ユニークな識別子を持 る. 要素fsdLinkは,要素fsDeclの属性xml:idにあるURIで示された,素性構造 型と関連する.

例えば,ある文書doc.xmlの中で, gpsglexという2つ型の素性構造があるとしよう. この時,要素fsDeclを使い,当該文書のヘダー中に,以下の ように記録することができる.
<TEI>
 <teiHeader>
  <fileDesc>
<!-- doc1 -->
  </fileDesc>
  <encodingDesc>
<!-- ... -->
   <fsdDecl>
    <fsDecl type="gpsg">
<!-- information about this type -->
    </fsDecl>
    <fsDecl type="lex">
<!-- information about this type -->
    </fsDecl>
   </fsdDecl>
<!-- ... -->
  </encodingDesc>
 </teiHeader>
 <text>
  <body>
   <fs type="lex">
<!-- an instance of the typed feature structure "lex" -->
   </fs>
  </body>
 </text>
</TEI>

この例では,要素fsと要素fsDeclとの間には,リンクが張られてい ると解釈される. それは,この2つの要素には,属性typeに,同じ値が付与され,かつ,同一 文書内にあるからである. このような,リンクの簡単に表現する方法の他,要素fsdLinkを使い,より明 示的にリンクを表現する方法もある. これについては,以下で解説する.

同じタイプの素性構造を持つ,別の文書があると想定してみよう. この時,もし同種の宣言を2度しないようにするのであれば,2つ めの文書から該当する宣言を参照する仕組みが必要である. これを実現する,一番簡単な方法73は,1つ目の文書doc1.xml中にある要素fsDeclに,XML識別子を持たせるこ とである.

<!-- ... --><fsdDecl>
 <fsDecl type="gpsgxml:id="GPSG">
<!-- information about this type -->
 </fsDecl>
 <fsDecl type="lexxml:id="LEX">
<!-- information about this type -->
 </fsDecl>
</fsdDecl>
(上の例では,XML識別子は大文字で書かれているが,そうである 必要はない.要は,XML識別子が,識別子として正しく,当該文 書中でユニークであればよい.)
これにより,2つ目の文書中にある要素fsdDeclでは,1つ目の文書中にある 要素fsDeclへのポインタのみを記録すればよい.
<TEI>
 <teiHeader>
  <fileDesc>
<!-- doc2 -->
  </fileDesc>
  <encodingDesc>
<!-- ... -->
   <fsdDecl>
    <fsdLink type="gpsgtarget="doc1.xml#GPSG"/>
    <fsdLink type="lexxtarget="doc1.xml#GPSG"/>
   </fsdDecl>
<!-- ... -->
  </encodingDesc>
 </teiHeader>
 <text>
  <body>
   <fs type="lexx">
<!-- an instance of the typed feature structure "lex" -->
   </fs>
  </body>
 </text>
</TEI>
文書doc2では,文書doc1で使われた素性構造と同じタイプ名 を使う必要はないことに注意して欲しい. 文書doc2にあるタイプlexxは,制約の識別子として宣言されて おり,これは文書doc1にあるタイ プ名lexとは,別のものである.

要素fsdDeclは,タイプ付き素性構造を が使われているTEI文書中の要素teiHeaderで使うことができる. または,要素fsdDeclは,素性構造とは独立し, それ自身が文書としてあることも可能である. この時,それ自身向けの要素teiHeaderを取ることも可能である. このような2つの使い方ができるのは,この要素が,クラスmodel.encodingPart と,クラスmodel.resourceLike の両方のメンバーだからである.

本ガイドラインでは,要素fsdDeclの属性typeの値として,ユニークさは求めていな い. また,同様に,要素fsの属性typeが,必ず要素fsdDeclでも定義されていることも求め ていない. もし,この様な制約を求めたい場合には,例えば,Schematronが するよう,これらの制約を強要させるソフトウェアを開発するこ とが推奨される.

18.11.2 素性システム宣言の概要

素性システム宣言には,複数の素性構造の宣言が記述され,各宣 言には,3つの部分から構成させている. ひとつは,選択的な記述(素性構造のタイプが散文で解説される), ひとつは,必須となる素性宣言(素性構造のタイプにある素性値 の範囲や既定値を定める), そして,選択的な素性構造制約(素性値の制約となるもの)である.
  • fsDescr 要素fsDeclで定義される素性構造の内容を,散文で示す.
  • fDecl ひとつの素性を宣言する.名前,構造,定義域,デフォルト 値など.
  • fsConstraints 妥当な素性構造の内容に課す制約を示す.

素性宣言と素性構造制約については,この後の章で解説する. これと似た要素fsDeclは,素性構造のタイプを継承すること で,簡易に表現することができることに注意して欲しい. 要素fsDeclは,複数の基礎タイプ(base type)を指定し,そこで指定されたところから,素性宣言や制約 を継承することができる. 例えば,要素fsDecl type="Basic"に は,要素fDeclname="One"や,要素 fDecl name="Two"があり,また,要 素fsDecltype="Derived" baseTypes="Basic"には,要素fDeclname="Three"があるとしよう. この時,要素fs type="Derived"の記 述には,3つの素性全てが含まれている必要がある. 理由は,要素fsDecltype="Derived" は,属性でBasicが基礎タイプとして 指定されていることから,2つの素性宣言を,要素fsDecl type="Basic"から継承しているため である.

以下の例は,素性構造宣言の構造の全体である.
<fsDecl type="SomeName">
 <fsDescr>Describes what this type of fs represents</fsDescr>
 <fDecl name="featureOne">
<!-- The declaration for featureOne -->
 </fDecl>
 <fDecl name="featureTwo">
<!-- The declaration for featureTwo -->
 </fDecl>
 <fsConstraints>
<!-- The feature structure constraints go here -->
 </fsConstraints>
</fsDecl>

属性baseTypesには,複数のタイプ名 が示され,そこから素性の定義や制約が継承されることになる. もし,継承した内容に,同じ名前で定義された素性がある場合, または,同じ名前の複数の定義が継承された場合,当該素性の値 は,選言されたものとして,定義される. また,制約が継承される場合は,複数の制約が連接されたものと して,定義される. 基礎タイプが指定されていない場合には,継承される素性や制約 はない.

本ガイドラインにおいて,素性値の既定値が定義できるものの,素性 の継承では,定義内容が増える仕組みになっている.

制約を束ねる時,結果としてできたものが,矛盾を含む場合があ る. 例えば,同じ素性に対してある2つの制約で,素性値の範囲が選 択的に定義されている状況で,その制約のうちひとつは,必須の 制約としてある場合である. このような場合,定義されている正しい素性構造は,存在しなく なる.

属性baseTypesで指定されるタイプ は,正統なXML名前としての1単語である. 例えば,空白文字を伴ったり,数字で名前が始まったりすること はできない. 基礎タイプの値は,複数のものを空白文字で区切ることができ, 例えば,fsDecl type="Sub" baseTypes="Super1 Super2"のようになる.

18.11.3 素性宣言

各素性は,要素fDeclで定義され,属性nameが,当該素性の識別子を示し, この属性値は,要素fにある属性nameの値と一致するものとなる. 要素fDeclは,3つの下位要素から成る. 選択的な散文による記述(素性とその値を解説する), 必須となる範囲定義(素性値の範囲),そして,既定値の定義(要 素fsの中 で素性が使われていなかった場合の既定値)である. 素性構造の中で,素性が
  • 選択的ではなく(つまり,必須であるが),
  • 素性値が与えられていない,または要素defaultが用意されている状態で( ISO 24610-1, 5.10, 規定値を参照),かつ
  • 既定値が定義されていないか,または,条件付き既定値 が規定されている中で,どの条件にも当てはまらない場合,
当該素性の値は,要素vRange中に定義されている,もっともら しい値が選択される. 複雑な構成になっている場合は,集合,バック,リストの単位と なる(訳注:昔の版P4の規格が生きた文章になっている.P5で は,属性orgの定義は削除されているため,この記述は不明瞭ま たは不要). または,素性構造のなかで,素性が
  • 選択的で,
  • 素性値が与えられていない,または,要素defaultが用意されている状態で,
  • 既定値が定義されているか,または,条件付き既定値が規 定されている中で,どれかの条件に当てはまる場合,
当該素性値は,当体素性構造で定めるもっともらしい値,すなわ ち,既定値が選択される.

素性構造は,既定値が示された範囲に収まらない場合,取り得 る妥当な値がないという事態もありうる. そのため,より制約を強力にするための仕組みが必要となる.

以下の要素は,素性システム宣言で使うことができる.
  • fDecl ひとつの素性を宣言する.名前,構造,定義域,デフォルト 値など.
    name 素性の名前を示す.要素fの属性nameと一致するもの.
    optional 当該素性値があるかどうかを示す.
  • fDescr 当該素性により示されるものを,散文で示す.
  • vRange 要素fs, vAltで示される素性値の範囲を定義する.要素fの 妥当な値は,その範囲内になければならない.要素fが複数 の値をとる場合(属性orgがそれを認めている時),各値は当 該要素vRangeが示す範囲内になければならない.
  • vDefault 素性構造が要素fを持たないときのデフォルト値を宣言する.条件的でない場 合,要素fsまたは値がもうひとつ(または,要素 fDeclにある 属性orgの値に依存する数だけ)付与される.条件的な場合, 要素であればひとつ以上が付与される.デフォルト値が指定さ れてい ない場合,または条件が成立しない場合は,値noneを とるする.
  • if 素性の条件におけるデフォルト値を定義する.当該値には,素性構造が指定される.
  • then/ 要素if中のデフォルト値と条件部,または 要素cond中の前提部と帰結部を区切る.

素性値の妥当性を判断する仕組みや,既定値に付加された条件を 判断する仕組みを,「包摂(subsumption)」と呼んでいる. 包摂は,素性構造に対する基本演算となる. 直感的にいえば,素性構造FSは, 他の全ての素性構造,少なくとも自らと同等のものに「包摂され る」といえる(訳注:正しくない.整合性が保証されるという条 件付が必要となる.). つまり,当該FSが持つ素性値は,包摂されることで,それを定義する全て の素性構造もそれを定義することになる. また,当該FSにあるリンク(re-entrancies)も同様に解釈される. (Carpenter (1992)Pereira (1987)Shieber (1986)を参照) これについてのより厳密な定義は,ISO 24610-1:2006にある.

この様な定義を使い,包摂の考え方を,選択,否定,基本値,属 性を扱うケースにも当てはめることができる. 例えば,要素vAlt が素性値vを持っているとすると,こ れは値vに包摂されていることになる. また,値vの否定(これは18.8.2 否定で解説され た要素vNotで示される)は,vでない値に包摂されていることになる. 例えば,<vNot><numeric value='0'/></vNot> は,ゼロではない値に包摂されていることになる. また,fstype="X"/は,タイプが Xではない素性構造に,それが妥当で なくとも,包摂されていることになる.

素性宣言の例として,Gazdar et al's Generalized Phrase Structure Grammarからの例を考えてみる. この書籍の補遺に,以下のような,英語を扱った素性システムが 提案されている.
feature value range
INV {+, -}
CONJ {and, both, but, either, neither, nor, or, NIL}
COMP {for, that, whether, if, NIL}
AGR CAT
PFORM {to, by, for, ...}
Feature specification defaults
FSD 1: [-INV]
FSD 2: ~[CONJ]
FSD 9: [INF, +SUBJ] --> [COMP for]
素性INVは,当該文が倒置であるかどうかを示し,値には,(+) と(-)のみを取ることができる. この素性が示されていない場合は,既定値規則(FSD 1)により,値 (-)が付与されることになる. この素性の,素性宣言は,以下のようになる.
<fDecl name="INV">
 <fDescr>inverted sentence</fDescr>
 <vRange>
  <vAlt>
   <binary value="true"/>
   <binary value="false"/>
  </vAlt>
 </vRange>
 <vDefault>
  <binary value="false"/>
 </vDefault>
</fDecl>

値の範囲は,選択(より正確には,排他的選言)として定義されて いる. これは,要素binaryを使っても同じように表現す ることができる. つまり,当該素性値は,真か偽のどちらか一方を取ることにな り,両方を選択したりどちらも選択しないことはできない,ということであ る.

素性CONJは,表層形が接続詞であることを示している. 既定値規則(FSD 2)にある記号「~」は,否定を意味している. つまり,既定値では,接続詞が使えないことを示している. 但し,素性CONJがそもそも書かれていないことと,素性CONJに値 NILが付与されていることは,別のものであることに注意して欲 しい. この場合,値NILは,文の接続は起こりうるが,表層上,そこに 接続詞が現れることはない,という事になる. この様な素性向けの素性宣言は,例えば,以下のようになる.
<fDecl name="CONJ">
 <fDescr>surface form of the conjunction</fDescr>
 <vRange>
  <vAlt>
   <symbol value="and"/>
   <symbol value="both"/>
   <symbol value="but"/>
   <symbol value="either"/>
   <symbol value="neither"/>
   <symbol value="nor"/>
   <symbol value="or"/>
   <symbol value="NIL"/>
  </vAlt>
 </vRange>
 <vDefault>
  <binary value="false"/>
 </vDefault>
</fDecl>
厳密にいえば,この例では,要素vDefaultは,使う必要はない. なぜなら,2値の値falseにより,当 該素性値は,示されている値以外には適切な値は取り得ない,と いう情報を示しているだけだからである.
素性COMPは,補文標識の表層形を示している. その値の範囲は,素性CONJと同じように示されることになる. 但し,その既定値規則(FSD 9)には,条件が付いている. すなわち,動詞形が自動詞で(素性VFORMは,この規則中では示さ れていない.理由は,値にINFしか取らないからである),主語を 伴っている場合に,補文標識forが使われる,ということである. 例えば,「It is necessary to go,」という文で,ここにある不定詞の主語として「John」 を採る場合,補文標識はforを 使う必要がある,ということである. 結果は,「It is necessary for John to go.」 となる. この素性の素性宣言は,例えば,以下のようになる.
<fDecl name="COMP">
 <fDescr>surface form of the complementizer</fDescr>
 <vRange>
  <vAlt>
   <symbol value="for"/>
   <symbol value="that"/>
   <symbol value="whether"/>
   <symbol value="if"/>
   <symbol value="NIL"/>
  </vAlt>
 </vRange>
 <vDefault>
  <if>
   <fs>
    <f name="VFORM">
     <symbol value="INF"/>
    </f>
    <f name="SUBJ">
     <binary value="true"/>
    </f>
   </fs>
   <then/>
   <symbol value="for"/>
  </if>
 </vDefault>
</fDecl>
素性AGRは,主語と動詞の一致に関する素性である. Gazdar et al.では,「CAT」としてこの素性の範囲が規定されて いる. つまり,この素性値は「分類」を指すもので,素性構造に対応す るGazdar et al.の用語である. とてもぼやけた表現となっている. ここでは,他の素性構造は認められていない. 一致に関する素性構造のみを使うことができる(この複雑として,人 称と数の一致に関する例を,本章の最後に示す). 以下にある素性宣言は,当該素性値の範囲を制限するものである.
<fDecl name="AGR">
 <fDescr>agreement for person and number</fDescr>
 <vRange>
  <fs type="Agreement"/>
 </vRange>
</fDecl>
ここでは,当該素性値が,タイプAgreementの素性構造であることが示されて いる. この例の完全なものは,本章の最後に載せてある. そこには,要素fDecl name="PERS"や 要素fDecl name="NUM"を伴う 要素fsDecl type="Agreement"が使わ れている.
素性PFORMは,前置詞の表層形を示すものである. 素性PFORMは,先の定義では,任意の値が取れるようになってい ることから,以下の例では,要素symbolの代わりに要素 stringが使われている.
<fDecl name="PFORM">
 <fDescr>word form of a preposition</fDescr>
 <vRange>
  <vNot>
   <string/>
  </vNot>
 </vRange>
</fDecl>
この例では,値の否定が示されている. すなわち, 「<vNot><string/></vNot>」は, 空文字列以外の全ての文字列から包摂されていることになる.

クラスmodel.featureValには, 代替値(vAlt)や,複雑な値(vColl)を含む,可能な全ての素性値がまとめら れている.

18.11.4 素性構造制約

素性構造の妥当性を保証するためには,各素性が取り得る値の範 囲を特定する以上の仕組みが必要となる. 例えば,同じ素性構造,または埋め込まれている素性構造にあ る,ある素性値が他の素性値と共起する制約なども使うことも必 要となる.

そのような,素性構造の妥当性を保証する為の制約は, 要素fsDeclの中で,要素fsConstraintsを使い, 一連の条件節や,必要十分条件として与えられる. これにより,全ての制約を満たす素性構造のみが,妥当なものと されることになる. 素性condは,真偽値による条件判断を表現す るもので,これにより,前提部と帰結部の2つが共に真である時,ま たは,前提部が偽の時に,成立することになる. 要素bicondは,必要十分条件を示すものであ る. すなわち,条件判断される2つの項目が,それぞれ前提部と帰結 部となる条件判断が,共に成立することになる. 素性構造において,制約を構成する前提部と帰結部は,共に素性構造 として表現される. 各節は,そこで示されている素性構造に「包摂されている」( 18.11.3 素性宣言 を参照)場合にのみ,真となる. 但し,帰結部が表現するものは,単なる評価対象ではなく,真であ ることが示されることになる. つまり,この条件文とは,前節は,当該素性構造から包摂されて いないこと,または, 前節は当該素性構造から包摂されると同 時に後節と統合されることのいずれかを決めるものとなる(もし 条件が満たされれば,後節がその結果を包摂することになる). 実際,このような制約を課すことで,それが提示する素性構造と 合致する制約が知られていない際に,その効果が発揮される. 例えば,当該素性構造が情報を担うものであるには, 真理値が与えられているか,または何らかの理由でそれ決められ ないでいるかが分かるまで, 当該制約を常に注視しておく必要がある.

以下の要素は,素性システム宣言の一部である要素fsConstraintsを構成するものである.
  • fsConstraints 妥当な素性構造の内容に課す制約を示す.
  • cond 素性構造の条件制約を定義する.前提部と帰結部は,素性構 造として定義さ れている.前提部と帰結部が共に真であった とき,または前提部が偽であったときに,当該条件節は真と なる.
  • bicond 素性構造の制約を必要十分条件として定義する.前提部と帰 結部は,素性構造またはそのグループとして定義される.当該 制約は,与えられた2つの素 性構造が共に真であるか,または ともに偽である場合に,真になる.
  • then/ 要素if中のデフォルト値と条件部,または 要素cond中の 前提部と帰結部を区切る.
  • iff/ 必要十分条件における前提部と帰結部の区切を示す.
例えば,素性構造制約として,Gazdar, et al. (1985:246–247) にある英語を対象とした素性システムにある「素性の共起制約」 について考えてみる.
FCR 1: [+INV] &#8594; [+AUX, FIN] FCR 7: [BAR 0] &equiv; [N] &amp; [V] &amp; [SUBCAT] FCR 8: [BAR 1] &#8594; ~[SUBCAT]
最初の制約は,与えられた文が倒置であれば,必ず助動詞と動詞 をもつ,という条件である. つまり,以下のようなものである.
<cond>
 <fs>
  <f name="INV">
   <binary value="true"/>
  </f>
 </fs>
 <then/>
 <fs>
  <f name="AUX">
   <binary value="true"/>
  </f>
  <f name="VFORM">
   <symbol value="FIN"/>
  </f>
 </fs>
</cond>
2つめの制約は,素性BARの値がゼロ(つまり,文レベル)であれ ば,素性値N,V, SUBCATを持つ,という条件である. この条件文は,必要十分条件の形であることから,素性値N, V, SUBLCATを持つのであれば,素性値BARの値はゼロである,という 条件も示している. つまり,以下のようなものである.
<bicond>
 <fs>
  <f name="BAR">
   <symbol value="0"/>
  </f>
 </fs>
 <iff/>
 <fs>
  <f name="N">
   <binary value="true"/>
  </f>
  <f name="V">
   <binary value="true"/>
  </f>
  <f name="SUBCAT">
   <binary value="true"/>
  </f>
 </fs>
</bicond>
最後の制約は,素性BARの値が1(つまり,句レベル)であれば,素 性値SUBCATは空である(~),という条件である. この条件は,必要十分条件ではない. 素性SUBCATが条件に合わないこともある. つまり,以下のようなものである.
<cond>
 <fs>
  <f name="BAR">
   <symbol value="1"/>
  </f>
 </fs>
 <then/>
 <fs>
  <f name="SUBCAT">
   <binary value="false"/>
  </f>
 </fs>
</cond>

要素condと要素bicondでは,空要素である要素thenと要素iffが使われていること に注意して欲しい. これらは,前提部と帰結部を分ける役目を果たしている. この2つの要素は,主に,人が読んで理解しやすいために採用さ れたものである.

18.11.5

本章(訳注:本節のこと)のまとめとして,今までに使われてきた 例を元に,完全な素性システム宣言の例を,以下にまとめる.
<TEI>
 <teiHeader>
  <fileDesc>
   <titleStmt>
    <title>A sample FSD based on an extract from Gazdar
         et al.'s GPSG feature system for English</title>
    <respStmt>
     <resp>encoded by</resp>
     <name>Gary F. Simons</name>
    </respStmt>
   </titleStmt>
   <publicationStmt>
    <p>This sample was first encoded by Gary F. Simons (Summer
         Institute of Linguistics, Dallas, TX) on January 28, 1991.
         Revised April 8, 1993 to match the specification of FSDs
         in version P2 of the TEI Guidelines. Revised again December 2004 to
         be consistent with the feature structure representation standard
         jointly developed with ISO TC37/SC4.
    </p>
   </publicationStmt>
   <sourceDesc>
    <p>This sample FSD does not describe a complete feature
         system. It is based on extracts from the feature system
         for English presented in the appendix (pages 245–247) of
         Generalized Phrase Structure Grammar, by Gazdar, Klein,
         Pullum, and Sag (Harvard University Press, 1985).</p>
   </sourceDesc>
  </fileDesc>
 </teiHeader>
 <fsdDecl>
  <fsDecl type="GPSG">
   <fsDescr>Encodes a feature structure for the GPSG analysis
       of English (after Gazdar, Klein, Pullum, and Sag)</fsDescr>
   <fDecl name="INV">
    <fDescr>inverted sentence</fDescr>
    <vRange>
     <vAlt>
      <binary value="true"/>
      <binary value="false"/>
     </vAlt>
    </vRange>
    <vDefault>
     <binary value="false"/>
    </vDefault>
   </fDecl>
   <fDecl name="CONJ">
    <fDescr>surface form of the conjunction</fDescr>
    <vRange>
     <vAlt>
      <symbol value="and"/>
      <symbol value="both"/>
      <symbol value="but"/>
      <symbol value="either"/>
      <symbol value="neither"/>
      <symbol value="nor"/>
      <symbol value="or"/>
      <symbol value="NIL"/>
     </vAlt>
    </vRange>
    <vDefault>
     <binary value="false"/>
    </vDefault>
   </fDecl>
   <fDecl name="COMP">
    <fDescr>surface form of the complementizer</fDescr>
    <vRange>
     <vAlt>
      <symbol value="for"/>
      <symbol value="that"/>
      <symbol value="whether"/>
      <symbol value="if"/>
      <symbol value="NIL"/>
     </vAlt>
    </vRange>
    <vDefault>
     <if>
      <fs>
       <f name="VFORM">
        <symbol value="INF"/>
       </f>
       <f name="SUBJ">
        <binary value="true"/>
       </f>
      </fs>
      <then/>
      <symbol value="for"/>
     </if>
    </vDefault>
   </fDecl>
   <fDecl name="AGR">
    <fDescr>agreement for person and number</fDescr>
    <vRange>
     <fs type="Agreement"/>
    </vRange>
   </fDecl>
   <fDecl name="PFORM">
    <fDescr>word form of a preposition</fDescr>
    <vRange>
     <vNot>
      <string/>
     </vNot>
    </vRange>
   </fDecl>
   <fsConstraints>
    <cond>
     <fs>
      <f name="INV">
       <binary value="true"/>
      </f>
     </fs>
     <then/>
     <fs>
      <f name="AUX">
       <binary value="true"/>
      </f>
      <f name="VFORM">
       <symbol value="FIN"/>
      </f>
     </fs>
    </cond>
    <bicond>
     <fs>
      <f name="BAR">
       <symbol value="0"/>
      </f>
     </fs>
     <iff/>
     <fs>
      <f name="N">
       <binary value="true"/>
      </f>
      <f name="V">
       <binary value="true"/>
      </f>
      <f name="SUBCAT">
       <binary value="true"/>
      </f>
     </fs>
    </bicond>
    <cond>
     <fs>
      <f name="BAR">
       <symbol value="1"/>
      </f>
     </fs>
     <then/>
     <fs>
      <f name="SUBCAT">
       <binary value="false"/>
      </f>
     </fs>
    </cond>
   </fsConstraints>
  </fsDecl>
  <fsDecl type="Agreement">
   <fsDescr>This type of feature structure encodes the features
       for subject-verb agreement in English</fsDescr>
   <fDecl name="PERS">
    <fDescr>person (first, second, or third)</fDescr>
    <vRange>
     <vAlt>
      <symbol value="1"/>
      <symbol value="2"/>
      <symbol value="3"/>
     </vAlt>
    </vRange>
   </fDecl>
   <fDecl name="NUM">
    <fDescr>number (singular or plural)</fDescr>
    <vRange>
     <vAlt>
      <symbol value="sg"/>
      <symbol value="pl"/>
     </vAlt>
    </vRange>
   </fDecl>
  </fsDecl>
 </fsdDecl>
</TEI>

18.12 形式的定義と用法

この章で紹介したモジュールは,以下の要素から構成される. TEIスキーマに任意のモジュールを追加選択する方法について は,1.2 TEIスキーマの定義を 参照のこと.

Contents « 17 簡易分析機能 » 19 グラフ,ネットワーク,木

注釈
72.
本章で紹介されている内容は, ISO 24610-1 Language ResourceManagement — Feature Structure — Part One: Feature Structure Representationとして規格化されている.
73.
XML識別子を使わずに,TEI文書の構成要素を指示する方法につい ては,16.2.1 参照一般 で解説されている.


Copyright TEIコンソーシアム 2007 Licensed under the GPL. Copying and redistribution is permitted and encouraged.
Version 1.0.