5 NEWSML の機能
5.6 N EWS M ANAGEMENT
5.6.11 Property
Property 要素はContentItem、Topic、NewsComponent、NewsItemのいくつかのプロパティの値を表 すのに使われる。そのプロパティには形式名が付いていなければならず、複雑なプロパティを扱うための 下位プロパティを含んでもよい。
Propertyは名称を持ち、単純な値または、さらに入り組んだプロパティのセットでなる複雑な値のど
ちらかである。Value属性はPropertyの値を表す文字列である。ValueRef属性はPropertyの値へのポイ ンタを与えている。これはTopicSetにあるTopicかもしれないし、何か他のデータの一部であるかもしれ ない。もしValue属性とValueRef属性の両方が与えられたなら、ValueRefはPropertyの実際の値を表し、
Valueは文字列の表現か記憶を与えるだけのものである。AllowedValues属性がある場合、それは一連の
プロパティの値を定めたcontrolled vocabularyへのポインタである。この場合http URLかNewsML URN、
または#文字の後に現在の文章中にある要素のDuidが続くfragment identifierであろう。ポインタは外部 のcontrolled vocabularyを示すResource要素か、それ自体がcontrolled vocabularyである TopicSet要素 のどちらかを必ず参照しなければならない。
以 下 の 例 は 、Characteristics要 素配 下 に あ るPropertyの 形 式 名 の た め のdefault vocabularyが Characteristicsであることを、Catalogが宣言しているもので、ボキャブラリは www.mydomain.com の vocabs というサブディレクトリの中で見つけることができる。Context属性の値は2つの // 文字を含むXPath 文法の形式 で、Characteristics内にあるPropertyの入れ子の度合いを任意に示すものである。Width(幅)Propertyは、
Quantity(量)Property とUnit(単位)Propertyを含んでいる。3つの名前(Width、Quantity、Unit) は上記で宣言したcontrolled vocabularyによってすべて管理される。Quantityの値は7.5で、Unitの値はURN が urn:newsml:mydomain.com:20010101:Units:1 のリソース内にある要素である。このURN文字列 の後ろに続く#cmは、cmという値であるDuid属性を持つ要素を結び付けるfragment identifierである。Duidは NewsML DTDでID属性となるように宣言されており、これはどのようにfragment identifierがXML文書内で 解析するかということである。この例では、URNがTopicSetを識別するだろう。また、fragment identifierは、
センチメートル(centimeter) 単位であることを示すDescription下位要素を持つTopicへ行き着くだろう。例え ば、Topicはまた、メートル単位の長さのISO標準記述を指すHref属性を持つかもしれない。
<Catalog>
<Resource Duid="resource1">
<Urn>urn:newsml:mydomain.com:20010101:Characteristics:3</Urn>
<Url>www.mydomain.com/vocabs/characteristics.xml</Url>
<DefaultVocabularyFor Context="Characteristics//Property"/>
</Resource>
</Catalog>
...
<Characteristics>
<Property FormalName="Width">
<Property FormalName="Quantity" Value="7.5"/>
<Property FormalName="Unit" ValueRef="urn:newsml:mydomain.com:20010101:Units:1#cm"/>
</Property>
</Characteristics>
[NSK 解説]
Property要素はNewsMLに規定されている要素では表現できない情報を記述する。基本的な使い方と
してはFormalName属性で種別を表し、Value属性にその値を記述する。Property要素の中にProperty
要素を入れ子構造で記述する場合は、親の Property要素はFormalName属性だけを記述する。その値
は、子のPropertyに記述する。Value属性値は原則として自由形式である。AllowedValues属性には、
Value属性値の候補の入っているTopicSetファイルへのポインタを記述する。
(例)入れ子構造のない単純なProperty要素の例
<Property FormalName=”ISBN” Value=”ISBN-87966-870-2” />
<Property FormalName=”PageCount” Value=”462” />
<!ELEMENT Property (Property*)>
<!ATTLIST Property %localid;
%formalname;
%assignment;
Value CDATA #IMPLIED ValueRef CDATA #IMPLIED AllowedValues CDATA #IMPLIED >
[ツリー図]
* Property × * Property ×
入れ子構造のサンプルは地域情報を参照のこと。
[NskNewsML:1 記述形式]
Metadata/Property要素 ・・・ ○
Characteristics/Property要素 △ その他のPropertyは ・・・・・・ ×
コラム:独自 Metadata の追加について
以下、Propertyを使ったメタデータの拡張方法について記述する。
NskNewsML:1ではMetadata/Propertyのみの使用が許されている。
他のPropertyについてはIPTCでの使い方が規定される可能性があるため、当面使用禁止としている
(Characteristics/Propertyは、日本新聞協会NewsMLレベル1解説書(第1.0.3版)で「使用停止(×)」か ら「規定外(△)」に変更)。
Property 要素は入れ子にすることで階層表現が可能であるが、構造を定義できないため、複雑な構造
にすることは避けるべきである。NskNewsML:1 の地域情報の表し方では、2階層までの構造とした。
(7.2地域情報の表現方法について参照)
Property要素はFormalName属性で種別、Value属性でその値を記述する。
Value属性のとり得る値は自由記述形式、またはCatalog/Resourceでボキャブラリを宣言することに
よりcontrolled vocabularyとして使用できる。
階層構造をとった場合は最下層のProperty要素のみValueをもつこととする。
1階層の場合も含めて、最下層のProperty要素にValueがない場合はエラーとする。
例)
・1階層並列表記の場合
<Property FormalName=”ImageWidth” Value=”1000”/>
<Property FormalName=”ImageHigh” Value=”1500”/>
・ 2階層表記の場合
<Property FormalName="NskOriginatedArea">
<Property FormalName="NskCountry" Value="USA"/>
<Property FormalName="NskLocation" Value="ハワイ島ホノルル沖"/>
</Property>
各社独自に Metadata を使用する場合は、独自の MetadataType のボキャブラリを用意できる。
MetadataType要素 のFormalName属性の値により拡張されたメタデータのタイプを記述する。NSK、
IPTCのボキャブラリを拡張することによりNSK、IPTCで定義するFormalName(メタデータタイプ)
を同時に使用することもできる。
Propertyのボキャブラリについての規定は無い。IPTC、NSK、その他独自のものが使用できる。
※ 補足 ※:MetadataType として、 NskAreaInformation を指定した場合の Property の記述は、
NskNewsML:1 記述形式に従うものとする。
例)独自Metadataで写真の値段を入れた場合
1.Valueが自由記述形式の場合
<Metadata>
<Catalog>
<Resource>
<!—MetadataType のボキャブラリを宣言(MyMetadataType中では、MediaPriceが定義されてい る) -->
<Urn>urn:newsml:Mycompany.or.jp:20010602:MyMetadataType:1</Urn>
<DefaultVocabularyFor Context="MetadataType/@FormalName"/>
</Resource>
<Resource>
<!—Property のボキャブラリを宣言(MyMediaPrice中では、PhotoPriceが定義されている) -->
<Urn>urn:newsml:Mycompany.or.jp:20010602:MyMediaPrice:1</Urn>
<DefaultVocabularyFor Context="Property/@FormalName"/>
</Resource>
</Catalog>
<MetadataType FormalName="MediaPrice"/>
<Property FormalName="PhotoPrice" Value="5000"/>
</Metadata>
2.Valueにcontrolled vocaburalyの値を使用する場合。
<Metadata>
<Catalog>
<Resource>
<!—MetadataType のボキャブラリを宣言(MyMetadataType中では、MediaPriceが定義されてい る) -->
<Urn>urn:newsml:Mycompany.or.jp:20010602:MyMetadataType:1</Urn>
<DefaultVocabularyFor Context="MetadataType/@FormalName"/>
</Resource>
<Resource>
<!-- Property のボキャブラリを宣言(MyMediaPrice中でPhotoPriceが定義されている) -->
<Urn>urn:newsml:Mycompany.or.jp:20010602:MyMediaPrice:1</Urn>
<DefaultVocabularyFor Context="Property/@FormalName"/>
</Resource>
<Resource>
<!-- Value のボキャブラリを宣言(MyPhotoPrice中でPrice1が定義されている) -->
<Urn>urn:newsml:Mycompany.or.jp:20010602:MyPhotoPrice:1</Urn>
<DefaultVocabularyFor Context="Property[@FormalName='PhotoPrice']/@Value"/>
</Resource>
</Catalog>
<MetadataType FormalName="MediaPrice"/>
<Property FormalName="PhotoPrice" Value="Price1"/>
</Metadata>