5.6 NewsManagement
5.6.11 Property
Property 要素はContentItem、Topic、NewsComponent、NewsItemのいくつかのプロパティの値を 表すのに使われる。そのプロパティには形式名が付いていなければならず、複 雑なプロパティを扱うため の下位プロパティを含んでもよい。
Propertyは名称を持ち、単純な値または、さらに入り組んだプロパティのセットでなる複雑な値のどち らかである。Value属性はPropertyの値を表す文字列である。ValueRef属性はPropertyの値へのポインタ を与えている。これはTopicSetにあるTopicかもしれないし、何か他のデータの一部であるかもしれない。
もしValue属性とValueRef属性の両方が与えられたなら、ValueRefはPropertyの実際の値を表し、Value は文字列の表現か記憶を与えるだけのものである。AllowedSheme属性がもしあれば、propertyのValue 属性の内容に結びついたSchemeを表している。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>
<!ELEMENT Property (Property*)>
<!ATTLIST Property %localid;
% f o r m a l n a m e ; % a s s i g n m e n t ;
Value CDATA #IMPLIED ValueRef CDATA #IMPLIED AllowedScheme CDATA #IMPLIED AllowedValues CDATA #IMPLIED >
[ツリー図]
[NSK解説]
Property要素はNewsMLに規定されている要素では表現できない情報を記述する。基本的な使い方と
してはFormalName属性で種別を表し、Value属性にその値を記述する。AllowedScheme属性を使って、
Value属性の内容に結びつくSchemeを指定できる。AllowedScheme属性はNskNewsML レベル1.2か ら追加された属性で、他の属性と同様Propertyそのものが使用停止の個所は、下位の AllowedScheme も使用停止とする。
Property要素の中にProperty要素を入れ子構造で記述する場合は、親のProperty要素はFormalName 属性だけを記述する。その値は、子のPropertyに記述する。Value属性値は原則として自由形式である。
AllowedValues属性には、Value属性値の候補の入っているTopicSetファイルへのポインタを記述する。
(例)入れ子構造のない場合
<Property FormalName=”ISBN” Value=”ISBN-87966-870-2” />
<Property FormalName=”PageCount” Value=”462” />
(例) 入れ子構造がある場合
<Property FormalName="NskOriginatedArea">
<Property FormalName="NskCountry" Value="USA"/>
<Property FormalName="NskLocation" Value="ハワイ島ホノルル沖"/>
</Property>
[NewsML 仕様の変更点:NewsML v1.1]
AllowedScheme属性が追加された。
[NskNewsML:1記述形式]
Metadata/Property要素・・・ ○ Characteristics/Property要素 △ その他のPropertyは・・・・・・ ×
* Property
×* Property
×87
コラム:独自Metadataの追加について
以下、Propertyを使ったメタデータの拡張方法について記述する。
Property要素は入れ子にすることで階層表現が可能であるが、構造を定義できないため、複雑な構造に することは避けるべきである。
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、その他独自のものが使用できる。
例)独自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>
89