• 検索結果がありません。

5 NEWSML の機能

5.6 N EWS M ANAGEMENT

5.6.11 Property

Property 要素はContentItemTopicNewsComponentNewsItemのいくつかのプロパティの値を表 すのに使われる。そのプロパティには形式名が付いていなければならず、複雑なプロパティを扱うための 下位プロパティを含んでもよい。 

Propertyは名称を持ち、単純な値または、さらに入り組んだプロパティのセットでなる複雑な値のど

ちらかである。Value属性はPropertyの値を表す文字列である。ValueRef属性はPropertyの値へのポイ ンタを与えている。これはTopicSetにあるTopicかもしれないし、何か他のデータの一部であるかもしれ ない。もしValue属性とValueRef属性の両方が与えられたなら、ValueRefPropertyの実際の値を表し、

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 DTDID属性となるように宣言されており、これはどのようにfragment identifierXML文書内で 解析するかということである。この例では、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>