1 | 適用範囲 |
2 | 引用規格 |
3 | 用語及び定義 |
4 | 構文定義 |
4.1 | 構文について |
4.2 | 直列化からの復元 |
4.3 | 共通の構文構成物 |
4.3.1 | 共通の宣言 |
4.3.2 | reifier属性 |
4.3.3 | href属性 |
4.3.4 | 文字列からのIRIの作成 |
4.4 | topicMap要素 |
4.5 | topic要素 |
4.6 | itemIdentity要素 |
4.7 | subjectLocator要素 |
4.8 | subjectIdentifier要素 |
4.9 | instanceOf要素 |
4.10 | name要素 |
4.11 | value要素 |
4.12 | variant要素 |
4.13 | scope要素 |
4.14 | type要素 |
4.15 | occurrence要素 |
4.16 | resourceData要素 |
4.16.1 | 一般事項 |
4.16.2 | 直列化からの復元 |
4.16.3 | 埋込みXMLの正準化 |
4.17 | resourceRef要素 |
4.18 | association要素 |
4.19 | role要素 |
4.20 | topicRef要素 |
4.21 | mergeMap要素 |
5 | 適合性 |
A | 付録 A(規定)XTM 2.0のためのRELAX-NGスキーマ |
B | 付録 B(参考)XTM 2.0 DTD |
C | 付録 C(参考)XTM 2.0のためのW3C XMLスキーマ |
D | 付録 D(参考)XTM 1.0との違い |
E | 付録 E(参考)定義された用語の主題識別子 |
XTM(XMLトピックマップ)2.0は、トピックマップの交換のための構文である。構文は、拡張又は改変のために設計されていない。人手による編集の容易さは、XTMの設計では優先されない。したがって、直接に構文を編集することは推奨しない。
XTM構文の解釈は、構文からデータモデルへの対応付けを通して定義されるので、この規格は、ISO/IEC 13250-2 データモデルとの関連において読まれなければならない。データモデルのインスタンスをXTM構文に直列化する方法も提供される。
XTM 2.0は、[ISO/IEC 13250:2003] 及び [XTM1.0]で規定する XTM 1.0 構文の改訂である。二つの版の違いは、付録 Dで示す。
この規格は、トピックマップのためのXMLに基づく交換構文について定義する。交換構文は、[ISO/IEC 13250-2]で定義するデータモデルのインスタンスの交換に用いることができる。この規格は、交換構文からデータモデルへの対応付けも定義する。構文はRELAX-NGスキーマによって定義され、データモデルへの対応付けによって、より精密に定義される。それは、事実上、構文の解釈も定義する。
下記の引用文書は、この規格の適用に不可欠である。 これらの引用文書のうちで、西暦年を付記してあるものは、記載の年の版を適用し、その後の改正版(追補を含む。)には適用しない。西暦年の付記がない引用文書は、その最新版(追補を含む。)を適用する。
下記のそれぞれの文書は、文の中において文書を引用するのに使用される一意の識別子をもつ。一意な識別子は、最初のコンマまでの部分で構成されている。
ISO/IEC 13250-2, Information technology — Topic Maps — Data Model,
W3C XML, Extensible Markup Language (XML) 1.0 (Third Edition), W3C Recommendation, 4 February 2004, available at http://www.w3.org/TR/2004/REC-xml-20040204
W3C XML-Names, Namespaces in XML, W3C Recommendation, 14 January 1999, available at http://www.w3.org/TR/1999/REC-xml-names-19990114/
W3C XPointer, XPointer Framework Version 1.0, W3C Recommendation, 25 March 2003, available at http://www.w3.org/TR/2003/REC-xptr-framework-20030325/
W3C XML-Infoset, XML Information Set (Second Edition), W3C Recommendation, 4 February 2004, available at http://www.w3.org/TR/2004/REC-xml-infoset-20040204
W3C Canonical XML, Canonical XML Version 1.0, W3C Recommendation, 15 March 2001, available at http://www.w3.org/TR/2001/REC-xml-c14n-20010315
ISO/IEC 19757-2, Information technology — Document Schema Definition Languages (DSDL) — Part 2: Regular-grammar-based validation — RELAX NG, available at http://www.relaxng.org
IETF RFC 3986, Uniform Resource Identifiers (URI): Generic Syntax, Internet Standards Track Specification, January 2005, available at http://www.ietf.org/rfc/rfc3986.txt
IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005, available at http://www.ietf.org/rfc/rfc3987.txt
この規格のために、下記の用語及び定義を適用する。
この規格で定める構文。
頭字語 XTM は、しばしば、この規格で規定する構文を指すのに用いられる。その完全な名称は、XMLトピックマップ(XML Topic Maps)である。XTM構文のための名前空間は、http://www.topicmaps.org/xtm/
である。
XTM文書は、XTM構文に適合するXML文書である。この箇条は、簡潔構文([ISO/IEC 19757-2])のRELAX-NGスキーマを用いXTM文書の構文を定義する。XTM文書から[ISO/IEC 13250-2]への対応付けを示す文を用いて意味を定義する。完全なスキーマは、付録A、付録B のDTD、及び、付録Cの W3C XMLスキーマ で見ることができる。
実装におけるデータモデルの内部表現からトピックマップ構文のインスタンスへとトピックマップを移出するプロセスは、直列化として知られている。逆のプロセス(直列化からの復元)は、実装におけるデータモデルの内部表現のインスタンスを、トピックマップ構文のインスタンスから作り上げるプロセスである。
この箇条は、XTM構文のインスタンスが、どのようにJIS [ISO/IEC 13250-2] で規定するデータモデルのインスタンスへと、直列化から復元されるかについて規定する。直列化は、暗黙的にだけ規定する。しかし、直列化の実装は、あらゆるデータモデルインスタンスに対して、次を保証するのがよい。すなわち、その実装は、それによって生産されたXTM構文のインスタンスが、新しいデータモデルインスタンスに復元されたとき、その正準化が、[ISO/IEC 13250-4] に従って、元のデータモデルインスタンスの正準化と同じになることを保証するのがよい。
直列化からの復元プロセスへの入力は、以下のとおりである。
[W3C XML-Infoset] によって定義されたXTM文書を表す文書情報項目。([W3C XML-Infoset] からの情報項目特性は、[ISO/IEC 13250-2] からの特性と区別するために、[[特性名]]のように記述する。
絶対形式のIRI。これは、文書IRIとして知られているXTM文書が読み出されるIRIである。このIRIは、直列化からの復元において生成されるトピック情報項目の項目識別子を割り当てるために必要なので、常に与えられなければならない。XTM文書が特定のIRIから読まれなかった場合、アプリケーションは適切と考えられるIRIを提供する責任がある。
直列化からの復元は、文書情報項目の中の各々の要素情報項目を文書の順に処理することによってなされる。出会った個々の要素情報項目に対して、その要素型に対する箇条で規定している操作が実行される。入力要素情報項目は、[[namespace uri]]特性が"http://www.topicmaps.org/xtm/"
に設定され、[[local name]]特性が箇条の標題で与えられる要素型名に合致するとき、この規格の箇条に合致する。
新しい情報項目が作成される場合はいつでも、その情報項目の特性のうち集合値をもつものは空集合に初期化される。他のすべての特性は、nullに初期化される。
この規格は直列化からの復元プロセスへの入力としてXML情報集合のインスタンスを要求する。しかし、ほとんどの場合、実際の入力はXML文書になる。この規格は、XML文書からXML情報集合のインスタンスを作成する方法は制約しない。多くの場合、これは単にXMLプロセサの利用によって行われると仮定する。
XML勧告に適合するXMLプロセサでも、同じXML文書に対して、妥当性を検証するかしないか、及びどの任意選択機能に対応しているかに依存して、異なる結果を出力する可能性がある。受け取り側が用いるXMLプロセサの特別な振る舞いに依存することは、けっして推奨しない。
記述を簡潔にするため、下記の宣言をスキーマ全体を通じ使用する。
default namespace = "http://www.topicmaps.org/xtm/" namespace xtm = "http://www.topicmaps.org/xtm/" datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" start = topicMap reifiable = attribute reifier { xsd:anyURI }?, itemIdentity* href = attribute href { xsd:anyURI } any-markup = (text | element * - xtm:* { attribute * { text }*, any-markup* })* |
reifier 属性は、それが現れるトピックマップ構成物から、その構成物を具体化するトピックを参照するために用いられる。参照は、トピックの項目識別子のうちの一つに合致するIRIである。
直列化からの復元において、reifier 属性を表している属性ノードの[[normalized value]]特性の値は、4.3.4 の手順に従い絶対形式のIRIに変換される。そのIRIを[item identifiers]特性にもつトピック情報項目がある場合、そのトピック情報項目は、処理中のトピックマップ構成物の[reifier]特性の値として設定される。そのようなトピック情報項目が存在しない場合、新しいトピック情報項目が作成され、そのIRIがその[item identifiers]特性に追加され、そのトピック情報項目は、処理中のトピックマップ構成物の[reifier]特性の値として設定される。
href 属性は、常に、[IETF RFC 3986] 及び [IETF RFC 3987] に準じた正当な相対形式又は絶対形式のIRIを用い、情報資源を参照する。しかし、その参照の意味は、文脈に依存する。
直列化からの復元において、href 属性を表す属性ノードの[[normalized value]]特性の値は、4.3.4 の手順に従いIRIに変換される。
文字列からIRIを生成するために、文字列中の %HH
エスケープシーケンスをそれが表す文字へと置換し、その結果の文字の連続をUTF-8から抽象Unicode文字へと復号する。結果として生じる文字列は、文書IRIに対してそれを解決することによって、絶対形式のIRIに変換される。
topicMap 要素型は、すべてのXTM文書の文書要素である。トピックマップの入れ物の役割を果たし、具体化することができる。しかし、それ以上の意味をもたない。 宣言は、下記のとおりである。
topicMap = element topicMap { reifiable, version, mergeMap*, (topic | association)* } version = attribute version { "2.0" } |
版(version)属性は、XTM文書がXTMのどの版(version)に適合するかについて指定するために用いる。XTM2.0文書の場合、これは“2.0”でなければならない。
直列化からの復元において、topicMap 要素からトピックマップ情報項目が作成される。
topic 要素型は、トピックを表すのに用いられ、トピック情報の入れ物及び参照点の役割を果たす。topic 要素の子要素は、名前及び出現と同様に識別性を提供する。一方、そのトピックが果たす関連役割は、topic 要素の外側で指定される。
topic 要素型の宣言は、下記のとおりである。
topic = element topic { id, (itemIdentity | subjectLocator | subjectIdentifier)*, instanceOf?, (name | occurrence)* } id = attribute id { xsd:ID } |
id 属性は、トピックのために文書内で一意な識別子を提供する。それは、そのトピックを参照するために用いられる。
直列化からの復元において、topic 要素からトピック情報項目が作成され、トピックマップ情報項目の[topics]特性に追加される。
ロケータは、文書IRI、文字 "#"
及び [[normalized value]]特性の値を連結することによって作成される。この[[normalized value]]特性は、[[local name]]特性が "id"
である要素情報項目の[[attributes]]特性の中の属性情報項目の[[normalized value]]特性である。このロケータは、トピック情報項目の[item identifiers]特性に追加される。これが他のトピック情報項目と同じトピック情報項目を生成する場合、二つのトピック情報項目は、[ISO/IEC 13250-2] に規定される手順に従い併合される。
itemIdentity 要素は、項目識別子を、その親要素が表すトピックマップ構成物に割り当てるのに用いられる。 宣言は、下記のとおりである。
itemIdentity = element itemIdentity { href } |
直列化からの復元において、4.3.3 で規定されるとおり、itemIdentity 要素の href 属性からロケータが生成される。このロケータは、親要素から生成される情報項目の[item identifiers]特性に追加される。親要素が topic 要素であって、これが他のトピック情報項目と同じトピック情報項目を生成する場合、二つのトピック情報項目は、[ISO/IEC 13250-2] に規定される手順に従い併合される。
subjectLocator 要素は、主題ロケータをその親 topic 要素が表すトピックに割り当てるために用いられる。 宣言は、下記のとおりである。
subjectLocator = element subjectLocator { href } |
直列化からの復元において、4.3.3 で規定されるとおり、subjectLocator 要素の href 属性からロケータが生成される。このロケータは、親 topic 要素から生成されるトピック情報項目の[subject locators]特性に追加される。これが他のトピック情報項目と同じトピック情報項目を生成する場合、二つのトピック情報項目は、[ISO/IEC 13250-2] に規定される手順に従い併合される。
subjectIdentifier 要素は、主題識別子をその親 topic 要素が表すトピックに割り当てるために用いられる。
subjectIdentifier 要素の宣言は、下記のとおりである。
subjectIdentifier = element subjectIdentifier { href } |
直列化からの復元において、4.3.3 で規定されるとおり、subjectIdentifier 要素の href 属性からロケータが生成される。このロケータは、親 topic 要素から生成されるトピック情報項目の[subject identifiers]特性に追加される。これが他のトピック情報項目と同じトピック情報項目を生成する場合、二つのトピック情報項目は、[ISO/IEC 13250-2] に規定される手順に従い併合される。
instanceOf 要素型は、一つ以上の型を、その親要素によって表されるトピックに割り当てるために用いられる。型は、常にトピックであって、instanceOf 要素の子要素によって示される。 instanceOf 要素型の宣言は、下記のとおりである。
instanceOf = element instanceOf { topicRef+ } |
instanceOf 要素の個々の子要素に対し、トピック情報項目が 4.20 の手順に従って作成される。その後、個々のトピック情報項目のために、下記の処置がとられる。
新たな関連情報項目が、その[roles]特性の中への二つの関連役割情報項目と、[type]特性の中へのtype-instance関連型([ISO/IEC 13250-2] の7.2参照)を表すトピック情報項目とを伴って生成される。そのようなトピック情報項目が存在しない場合、トピック情報項目が生成され、主題識別子がその[subject identifiers]特性に追加される。
[player]特性に、子topicRef 要素から作成されるトピックが設定され、一つ目の関連役割情報項目の[type]特性には、同じ関連([ISO/IEC 13250-2] の7.2参照)において type
役割を表しているトピック情報項目が設定される。
[player]特性に、親要素(すなわち、現在のトピック)によって作成されるトピックが設定され、二つ目の関連役割情報項目の[type]特性には、同じ関連([ISO/IEC 13250-2] の7.2参照)において instance
役割を表しているトピック情報項目が設定される。
name 要素型は、トピック名を、親 topic 要素で表されるトピックに与えるために用いられる。name 要素の子要素は、トピック名情報項目の特性値を与える。
name 要素型の宣言は、下記のとおりである。
name = element name { reifiable, type?, scope?, value, variant* } |
直列化からの復元において、name 要素からトピック名情報項目が生成され、親 topic 要素から生成されるトピック情報項目の[topic names]特性に追加される。
name 要素が type 子要素をもっている場合は、4.14 の手順に従って処理される。そうでない場合は、トピック名情報項目の[type]特性には、その[subject identifiers]特性に、"http://psi.topicmaps.org/iso13250/model/topic-name
" を含むトピック情報項目が設定される。そのようなトピック情報項目が存在しない場合、トピック情報項目が生成される。
value 要素型は、トピック名の値を与えるために用いられる。 宣言は、下記のとおりである。
value = element value { text } |
直列化からの復元において、 value 要素の[[children]]特性の中の情報項目が、詳しく検討される。そして、個々の文字情報項目に対して、[[character code]]特性によって指定されるUnicode文字が、親 name 要素によって生成されるトピック名情報項目の[value]特性に追加される。
variant 要素型は、異形名をトピック名に追加するために用いられる。 宣言は、下記のとおりである。
variant = element variant { reifiable, scope, (resourceRef | resourceData) } |
直列化からの復元において、variant 要素から異形情報項目が生成され、name 親要素によって生成されるトピック名情報項目の[variants]特性に追加される。scope 子要素が処理された後、name 親要素によって生成されるトピック名情報項目の[scope]特性の中のトピックが、異形名情報項目の[scope]特性に追加される。
scope 要素型は、親要素によって表されるステートメントに有効範囲を割り当てるために用いられる。 宣言は、下記のとおりである。
scope = element scope { topicRef+ } |
直列化からの復元において、scope 要素は作成される情報集合に直接に影響しないが、その子要素の解釈を変える。個々の topicRef 子要素は、トピック情報項目を作成するための 4.20 の手順に従い処理される。これらのトピック情報項目は、親要素によって作成される情報項目の[scope]特性の値として割り当てられる集合に寄せ集められる。
type 要素型は、その親要素によって表されるトピックマップ構成物に型を割り当てるために用いられる。型は常にトピックであって、type 要素の子要素によって示される。
type 要素型の宣言は、下記のとおりである。
type = element type { topicRef } |
直列化からの復元において、子要素は 4.20 の規定に従いトピック情報項目を作成する。それは、親要素によって作成される情報項目の[type]特性の値として設定される。
occurrence 要素型は、親要素によって定義されるトピックに出現を割り当てるために用いられる。 宣言は、下記のとおりである。
occurrence = element occurrence { reifiable, type, scope?, ( resourceRef | resourceData ) } |
直列化からの復元において、occurrence 要素から出現情報項目が生成され、親 topic 要素によって生成されるトピック情報項目の[occurrence]特性に追加される。
resourceData 要素型は、XTM文書に含まれる内容の形で、情報資源を表す。この情報資源は、異形名又は出現のどちらかであって、データ型をもつことができる。
resourceData 要素型の宣言は、下記のとおりである。
datatype = attribute datatype { xsd:anyURI } resourceData = element resourceData { datatype?, any-markup } |
datatype 属性は、resourceData 要素によって表される資源のデータ型を識別する絶対形式のIRIを含む。
resourceData 要素は、親要素によって生成される情報項目の[value]特性を設定する。datatype 属性が存在しない場合、"http://www.w3.org/2001/XMLSchema#string"
が[datatype]特性に設定される。datatype 属性が存在する場合、[datatype]特性には、その属性の値が設定される。
[datatype]特性に、"http://www.w3.org/2001/XMLSchema#anyType"
が設定される場合、4.16.3 の手順をその次に続けて行う。
[datatype]特性に、"http://www.w3.org/2001/XMLSchema#anyURI"
が設定される場合、resourceData 要素の内容から[value]特性の値を作成するために、4.3.4 の中の手順をその次に続けて行う。この場合、resourceData 要素が子要素をもつことは誤りである。
そうでない場合、その要素項目の[[children]]特性にある情報項目が、詳しく検討される。そして、個々の文字情報項目に対して、[[character code]]特性によって指定されるUnicode文字が、親要素から生成される情報項目の[value]特性に追加される。この場合、resourceData 要素が子要素をもつことは、誤りである。
XTM文書は、resourceData 要素の中に任意のマークアップを含んでもよい。このマークアップは、データモデルでは文字列として表される。文字列表現は、[W3C Canonical XML] に示される正準化プロセスの適用によって、埋込みのマークアップから作成される。正準化プロセスへの入力は、(これを要求する [W3C Canonical XML] と同じく)XPathノード集合である。ノード集合は、下記のとおりに作成される。
resourceData 要素の子孫であるすべての要素情報項目、属性情報項目及び文字情報項目のためのXPathノードを追加する。
名前空間IRIと名前空間接頭辞との集合の中に、一つの要素ノードも属性ノードも存在しない要素ノードに付与されたすべての名前空間ノードを取り除く。
正準化プロセスへ渡す二つ目のパラメタは、誤りである。すなわち、コメントは含まれない。
[W3C Canonical XML] の出力はUTF-8符号化されたオクテット列と定められているが、ここで定めるプロセスの出力は、それと等価な文字列であることが望ましい。
resourceRef 要素型は、情報資源を参照する。情報資源は、親要素がoccurrence 要素の場合は出現となり、親要素がvariant 要素の場合は異形名となる。
resourceRef 要素型の宣言は、下記のとおりである。
resourceRef = element resourceRef { href } |
直列化からの復元において、4.3.3 の手順に従いresourceRef 要素からロケータが作成され、親要素によって生成される情報項目の[value]特性に挿入される。情報項目の[datatype]特性にも、"http://www.w3.org/2001/XMLSchema#anyURI"
が設定される。
association 要素型は、関連を表す。role 子要素は、関連の関連役割を与える。宣言は、下記のとおりである。
association = element association { reifiable, type, scope?, role+ } |
直列化からの復元において、association 要素から関連情報項目が生成され、トピックマップ情報項目の[associations]特性に追加される。
role 要素型は、association 親要素によって生成される関連に関連役割を割り当てるために用いられる。宣言は、下記のとおりである。
role = element role { reifiable, type, topicRef } |
直列化からの復元において、role 要素から関連役割情報項目が生成され、親association 要素から生成される関連情報項目の[roles]特性に追加される。topicRef 子要素は、4.20 の手順に従いトピックに帰着する。そのトピックは、関連役割情報項目の[player]特性の値として設定される。
topicRef 要素型は、同じXML文書内又は外部のトピックを参照する。トピック参照の意味は、文脈に依存する。要素型の宣言は、下記のとおりである。
topicRef = element topicRef { href } |
href 属性は、トピック参照である絶対形式又は相対形式のIRI参照を含む。このIRI参照は、[W3C XPointer] が省略表現指示子(以前は無装飾名)と呼ぶフラグメント識別子をもたなければならない。
直列化からの復元において、4.3.3 の規定に従いtopicRef 要素からロケータが作成される。データモデルが[subject identifiers]特性又は[item identifiers]特性が等しいロケータを含むトピック情報項目をもつ場合は、そのトピック情報項目は、このtopicRef 要素によって作成されたものである。そのようなトピック情報項目が存在しない場合、トピック情報項目が生成され、その[item identifiers]特性にロケータが追加される。そのトピック情報項目は、このtopicRef 要素によって作成されたものになる。
mergeMap 要素型は、mergeMap 要素を含むトピックマップに併合される外部XTM文書を参照する。宣言は、下記のとおりである。
mergeMap = element mergeMap { href } |
href 属性は、併合されるXTM文書を参照している絶対形式又は相対形式のIRIを含む。IRIは、フラグメント識別子を含んではならない。
直列化からの復元において、絶対形式のIRIが、4.3.3 の手順に従い mergeMap 要素の href 属性から作成される。外部情報資源のIRIは解決され、その資源は、[W3C XML-Infoset] に従ったXML情報集合を作成するために、[W3C XML] に従ってXMLプロセサによって解析される。資源が整形式XML文書でない場合は、誤りである。XML情報集合は、入力としての文書項目と情報資源のIRIとを伴って、箇条4 の手順に従い、データモデルインスタンスへと、直列化から復元される。
新しいデータモデルインスタンス(これをBとする。)は、下記によって、現データモデル(これをAとする。)に併合される。
A の[topics]特性に、B の[topics]特性にあるすべてのトピック情報項目を追加する。
A の[associations]特性に、B の[associations]特性にあるすべての関連情報項目を追加する。
[ISO/IEC 13250-2] に示されているとおり、A へのトピックと関連の追加が、更なる併合を引き起こす可能性がある。
XTM文書は、下記の条件に従う場合、この規格に適合する。
整形式XML文書([W3C XML] 参照)になっている
[W3C XML-Names] に適合する。
付録 A のスキーマに適合する。
どのような誤りもどのようなデータモデル制約への違反も引き起こすことがなく、箇条4 で規定する手順に従い直列化からの復元が可能になっている。
下記のすべての要件を満たす場合、XTMプロセサはこの規格に適合する。
XTMプロセサは、XTM文書に適合しないどのような入力も受け入れてはならない。
XTMプロセサは、すべてのXTM文書に対して、箇条4 で規定される手順で生成されるデータモデルインスタンスと同一構造の表現を作成しなければならない。
# =========================================================================== # # XML Topic Maps 2.0 # # This is the normative RELAX-NG schema for the XTM 2.0 syntax, as # defined in ISO 13250-3. # # # # =========================================================================== # --- Common declarations default namespace = "http://www.topicmaps.org/xtm/" namespace xtm = "http://www.topicmaps.org/xtm/" datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" start = topicMap reifiable = attribute reifier { xsd:anyURI }?, itemIdentity* href = attribute href { xsd:anyURI } any-markup = (text | element * - xtm:* { attribute * { text }*, any-markup* })* # --- The schema topicMap = element topicMap { reifiable, version, mergeMap*, (topic | association)* } version = attribute version { "2.0" } topic = element topic { id, (itemIdentity | subjectLocator | subjectIdentifier)*, instanceOf?, (name | occurrence)* } id = attribute id { xsd:ID } name = element name { reifiable, type?, scope?, value, variant* } value = element value { text } variant = element variant { reifiable, scope, (resourceRef | resourceData) } scope = element scope { topicRef+ } instanceOf = element instanceOf { topicRef+ } type = element type { topicRef } occurrence = element occurrence { reifiable, type, scope?, ( resourceRef | resourceData ) } datatype = attribute datatype { xsd:anyURI } resourceData = element resourceData { datatype?, any-markup } association = element association { reifiable, type, scope?, role+ } role = element role { reifiable, type, topicRef } topicRef = element topicRef { href } resourceRef = element resourceRef { href } subjectLocator = element subjectLocator { href } subjectIdentifier = element subjectIdentifier { href } itemIdentity = element itemIdentity { href } mergeMap = element mergeMap { href } # --- End of schema |
<!-- ............................................................. --> <!-- XML Topic Map DTD .......................................... --> <!-- XML Topic Map (XTM) DTD, Version 2.0 This is XTM 2.0, an XML interchange syntax for ISO 13250 Topic Maps, defined by ISO 13250-3. Use this URI to identify the XTM namespace: "http://www.topicmaps.org/xtm/" The formal public identifier for this DTD is: "ISO/IEC 13250-3:2007//DTD XML Topic Maps (XTM) 2.0//EN" --> <!-- topicMap .................................................... --> <!ELEMENT topicMap ( itemIdentity*, mergeMap*, ( topic | association )* ) > <!ATTLIST topicMap version CDATA #FIXED '2.0' xmlns CDATA #FIXED 'http://www.topicmaps.org/xtm/' reifier CDATA #IMPLIED > <!-- topic ....................................................... --> <!ELEMENT topic ( ( itemIdentity | subjectLocator | subjectIdentifier )*, instanceOf?, ( name | occurrence )* ) > <!ATTLIST topic id ID #REQUIRED > <!-- itemIdentity ................................................ --> <!ELEMENT itemIdentity EMPTY > <!ATTLIST itemIdentity href CDATA #REQUIRED > <!-- subjectLocator............................................... --> <!ELEMENT subjectLocator EMPTY > <!ATTLIST subjectLocator href CDATA #REQUIRED > <!-- subjectIdentifier............................................ --> <!ELEMENT subjectIdentifier EMPTY > <!ATTLIST subjectIdentifier href CDATA #REQUIRED > <!-- name ........................................................ --> <!ELEMENT name ( itemIdentity*, type?, scope?, value, variant* ) > <!ATTLIST name reifier CDATA #IMPLIED > <!-- value ....................................................... --> <!ELEMENT value ( #PCDATA ) > <!-- variant ..................................................... --> <!ELEMENT variant ( itemIdentity*, scope, ( resourceRef | resourceData ) ) > <!ATTLIST variant reifier CDATA #IMPLIED > <!-- scope ....................................................... --> <!ELEMENT scope ( topicRef )+ > <!-- instanceOf .................................................. --> <!ELEMENT instanceOf ( topicRef )+ > <!-- type .................................................. --> <!ELEMENT type ( topicRef ) > <!-- occurrence .................................................. --> <!ELEMENT occurrence ( itemIdentity*, type, scope?, ( resourceRef | resourceData ) ) > <!ATTLIST occurrence reifier CDATA #IMPLIED > <!-- resourceData ................................................ --> <!ELEMENT resourceData ANY > <!ATTLIST resourceData datatype CDATA #IMPLIED > <!-- resourceRef ................................................. --> <!ELEMENT resourceRef EMPTY > <!ATTLIST resourceRef href CDATA #REQUIRED > <!-- association ................................................. --> <!ELEMENT association ( itemIdentity*, type, scope?, role+ ) > <!ATTLIST association reifier CDATA #IMPLIED > <!-- role ........................................................ --> <!ELEMENT role ( itemIdentity*, type, topicRef ) > <!ATTLIST role reifier CDATA #IMPLIED > <!-- topicRef .................................................... --> <!ELEMENT topicRef EMPTY > <!ATTLIST topicRef href CDATA #REQUIRED > <!-- mergeMap .................................................... --> <!ELEMENT mergeMap EMPTY > <!ATTLIST mergeMap href CDATA #REQUIRED > <!-- end of XML Topic Map (XTM) 2.0 DTD .......................... --> |
<!-- ............................................................. --> <!-- XML Topic Map Schema ....................................... --> <!-- XML Topic Map (XTM) Schema, Version 2.0 This is XTM 2.0, an XML interchange syntax for ISO 13250 Topic Maps, defined by ISO 13250-3. See http://www.isotopicmaps.org/sam/sam-xtm/ --> <xs:schema targetNamespace="http://www.topicmaps.org/xtm/" elementFormDefault="qualified" xmlns="http://www.topicmaps.org/xtm/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xs:annotation> <xs:appinfo> <dc:title>W3C XML Schema for XTM 2.0</dc:title> <dc:owner>ISO/IEC JTC1 SC34</dc:owner> <dc:contributor>Max Voskob</dc:contributor> <dc:contributor>Lars Marius Garshol</dc:contributor> <dc:contributor>Ann Wrightson</dc:contributor> </xs:appinfo> </xs:annotation> <!-- any-markup ................................................ --> <xs:complexType name="any-markup" mixed="true"> <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="datatype" type="xs:anyURI"/> </xs:restriction> </xs:complexContent> </xs:complexType> <!-- topicMap .................................................. --> <xs:element name="topicMap"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="mergeMap" minOccurs="0" maxOccurs="unbounded"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="topic"/> <xs:element ref="association"/> </xs:choice> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> <xs:attribute name="version" fixed="2.0"/> </xs:complexType> </xs:element> <!-- topic ..................................................... --> <xs:element name="topic"> <xs:complexType> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="itemIdentity"/> <xs:element ref="subjectLocator"/> <xs:element ref="subjectIdentifier"/> </xs:choice> <xs:element ref="instanceOf" minOccurs="0" maxOccurs="1"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="name"/> <xs:element ref="occurrence"/> </xs:choice> </xs:sequence> <xs:attribute name="id" type="xs:ID" use="required"/> </xs:complexType> </xs:element> <!-- itemIdentity .............................................. --> <xs:element name="itemIdentity"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <!-- subjectLocator ............................................ --> <xs:element name="subjectLocator"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <!-- subjectIdentifier ......................................... --> <xs:element name="subjectIdentifier"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <!-- name ...................................................... --> <xs:element name="name"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="type" minOccurs="0"/> <xs:element ref="scope" minOccurs="0"/> <xs:element ref="value"/> <xs:element ref="variant" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> </xs:complexType> </xs:element> <!-- value ..................................................... --> <xs:element name="value" type="xs:string"/> <!-- variant ................................................... --> <xs:element name="variant"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="scope"/> <xs:choice> <xs:element ref="resourceData"/> <xs:element ref="resourceRef"/> </xs:choice> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> </xs:complexType> </xs:element> <!-- scope ..................................................... --> <xs:element name="scope"> <xs:complexType> <xs:choice> <xs:element ref="topicRef" maxOccurs="unbounded"/> </xs:choice> </xs:complexType> </xs:element> <!-- instanceOf ................................................ --> <xs:element name="instanceOf"> <xs:complexType> <xs:choice> <xs:element ref="topicRef" maxOccurs="unbounded"/> </xs:choice> </xs:complexType> </xs:element> <!-- type ...................................................... --> <xs:element name="type"> <xs:complexType> <xs:choice> <xs:element ref="topicRef"/> </xs:choice> </xs:complexType> </xs:element> <!-- occurrence ................................................ --> <xs:element name="occurrence"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="type"/> <xs:element ref="scope" minOccurs="0"/> <xs:choice> <xs:element ref="resourceRef"/> <xs:element ref="resourceData"/> </xs:choice> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> </xs:complexType> </xs:element> <!-- resourceData .............................................. --> <xs:element name="resourceData" type="any-markup"/> <!-- association ............................................... --> <xs:element name="association"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="type"/> <xs:element ref="scope" minOccurs="0"/> <xs:element ref="role" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> </xs:complexType> </xs:element> <!-- role ...................................................... --> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="itemIdentity" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="type"/> <xs:element ref="topicRef"/> </xs:sequence> <xs:attribute name="reifier" type="xs:anyURI"/> </xs:complexType> </xs:element> <!-- topicRef .................................................. --> <xs:element name="topicRef"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <!-- resourceRef ............................................... --> <xs:element name="resourceRef"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> <!-- mergeMap .................................................. --> <xs:element name="mergeMap"> <xs:complexType> <xs:attribute name="href" type="xs:anyURI" use="required"/> </xs:complexType> </xs:element> </xs:schema> |
付録 D では、この規格の本体で規定する構文と [ISO/IEC 13250:2003] の構文との違いを示す。
違いは、下記のとおりである。
名前空間URIの変更。
topicMap 要素への version 属性の追加。
parameters 要素から scope 要素への変更。
roleSpec 要素から type 要素への変更。
member 要素から role 要素への変更。
role 要素の子要素として単一のtopic参照が必要。
baseName 要素から name 要素への変更。
instanceOf 要素は、topic 要素の中以外では type 要素へ変更。
name 要素の中での type 要素を許可。
variantName 要素と subjectIdentity 要素の削除。
variant 要素の入れ子の禁止。
occurrence 要素、association 要素及び role 要素の内側では type 要素が必須。
mergeMap 要素は、付加されたscopeを許可しない。
topic 要素以外のすべての要素から id 属性を削除。幾つかの要素で reifies 属性を追加。
itemIdentity 要素、subjectLocator 要素及び subjectIdentifier 要素の追加。
subjectIndicatorRef 要素の削除。
XTMは、Xlink及びXML Baseを利用しない。
mergeMap 要素は、すべての topic 要素及び association 要素に先行しなければならない。
resourceData 要素への datatype 属性の追加、及び、resourceData 要素における埋込みマークアップのサポート。
subjectIndicatorRef 要素を使用したXTM 1.0の暗黙的な具体化構文に代えて、 reifier 属性を追加。
baseNameString 要素から value 要素への変更。
この付録は、箇条3 の中で正式に定義された用語の各々に一つの主題識別子を定義する。主題識別子は、例えば、それらの主題についての情報の照合を可能にするために、それらが識別する主題へのあいまいでない参照を可能にするというただ一つの目的のために定義される。この規格は、これら識別子及びそれに加えて、一般に、主題識別子に関連するものに対して、いかなる種類の処理上の意味ももたせない。
ISO/IEC 13250:2003, Information technology — SGML applications — Topic maps
ISO/IEC 13250-4, Information technology — Topic Maps — Canonicalization (公開予定)
XTM1.0, XML Topic Maps (XTM) 1.0 Specification, Steve Pepper, Graham Moore, TopicMaps.Org, 2001, http://www.topicmaps.org/xtm/1.0/