CURIE

CURIE

[33] CURIE は、接頭辞によって URLを省略した表記法です。

[3] Semantic Web 界隈では以前から QNameURLの略記法として使ってきました。 しかし QName には XML に由来する、 XML 以外の場面で必要ではない制約が存在すること (例えば局所部分数字から始まってはいけないこと)URL と混在させると区別できないことといった問題がありました。 CURIEQName より構文的制約が緩和されており、 また URL との区別が必要な場合に使える安全 (safe) CURIE という構文が定義されています。

[96] CURIE は一見単純そうですが、本項で説明する通り定義が複雑で混乱しており、 QName 以上に厄介な代物です。 Semantic Web / Linked Data 界隈ではおおよそ好評価のようですが、 それ以外のコミュニティーではまったく受け入れられる様子がありません。

仕様書

[34] CURIE ははじめ RDF in HTML Task Force により、後に XHTML2 WG 本体により主に策定されています。 RDFa など CURIE を使う仕様は元々は QName を採用していましたが、 >>3 のような問題から CURIE が仕様化されることとなりました。

[35] しかし仕様が固まってから完成するまでに時間がかかるとか、 どの仕様書にどうやって含めるかなどどうでもいいことの議論に時間がかかるとか、 W3CXHTML2 WG ではありがちな作業の遅延により、単体の仕様書も存在しつつもいくつもの他の仕様書にコピペされる、 という状況になっていました。

[36] そのようなコピペの一つ、 RDFa (1.0) 仕様は W3C 勧告となっています (>>28)。 W3C 的に正式な仕様として CURIE を唯一定義していたのが本仕様です。

[37] CURIE を単体で規定する仕様は、 W3C 勧告過程を終えることなく XHTML2 WG が解散することとなり、 (しかも憲章上の WG 終了から1年経ってようやく) WG Note として出版されました (>>32)。

[38] W3C 的には WG NoteWG の文書に過ぎず、正式な規定の文書ではありません。

[59] RDFa 1.0 にかわって W3C 勧告となった RDFa 1.1 にも CURIE の定義がありますが、 これは従来の定義とはまた違っています。

CURIE

[39] CURIE は、

[ [ prefix ] ':' ] reference
... という接頭辞 (prefix) 参照 (reference) からなる文字列です >>32 3., >>58

[45] 接頭辞参照もどちらも空文字列にできますが、 CURIE 全体として空文字列とすることは禁止されています >>32 3.

[48] 接頭辞URL と束縛されていて、 CURIE が表すのは、接頭辞に束縛されている URL の後に reference を連結したものである、とされています。

[60] CURIE は、展開後に構文的に妥当RFC 3987 IRI とならなければなりません >>59

[61] IRI参照ではなく IRI となっています。 相対IRI参照となるものではいけないということです。
[68] この規定は RDFa 1.1 で追加されたようです。

[55] なお RDFa 1.0 世代の定義によれば参照には : が含まれることがありますが、 NCName で始まり、その直後に : が来るような形になることはありません (構文定義が参照している IRI の方でそれを認めると絶対IRI相対IRI参照が区別できなくなってしまうためです)。 ですから、接頭辞: が省略されてすぐに参照が始まる場合と接頭辞がある場合が区別できなくなることはありません。

[72] RDFa 1.1 の定義では NCName : ではじまることがあり得る (>>71) ので、 接頭辞がある場合とない場合と区別できません。一般的な生成規則の解釈では、そのような場合接頭辞と解釈することになるでしょう。

[56] XML SchemaDTD でのデータ型の定義はちょっと違った緩い形になっています (>>32 A.)。 DTD はともかく XML Schema は本来のものと同じ定義にすることもできたはずなのになんででしょうね・・・。 あえて制約を緩めたというよりはバグってるように見えますが。

XHTML2 WG では標準的な品質です。

接頭辞

[40] RDFa 1.0 世代の CURIE接頭辞XML名前空間 1.0 (なぜか第1版) の NCName です >>32 3.。 構文に示されたように、 prefix空文字列となることもできますし、また : を含めて prefix 全体を省略することもできます。

[41] なぜか第1版なので、 XML 1.0 第5版の Name の改訂の前の定義を指していることになります。

[95] RDFa 1.1CURIEXML名前空間1.0 3eNCName を参照しています >>58XML名前空間1.0 3eXML 1.0 の最新版を参照しています。 (XML名前空間1.0 3eXML 1.0 5e よりも新しい版です。)

_ 接頭辞

[49] RDFa 1.0 では、接頭辞 _、は RDF に対応した言語で予約されているので著者は使うべきではない >>32 3. とされています。

[50] Turtle などで bnode を表すために使われていることを言っているのでしょう。

[85] RDFa 1.1 では、文書_ 接頭辞を定義するべきではないRDFa処理器は、 _ 接頭辞の宣言を無視しなければならないとされています >>58接頭辞 _bnode を表すために使います。

[94] なぜか CURIE 自体ではなく RDFa 1.1 における CURIE の規定となっています。

[123] RDFa 1.1 によればRDFa処理器主語目的語_ を使って bnode として記述されている場合に bnode を作らなければなりませんが、連鎖などによって自動的に作られる bnode とは別のものとして扱わなければなりません>>124

接頭辞がない場合

[51] 接頭辞が無い場合の解釈については色々議論があったようですが (よくわかりませんがw)、 RDFa 1.0 世代においては最終的に (WG Note では)、接頭辞と : が両方省略されていればホスト言語の定義する語彙を表し、 接頭辞が省略されていて : があれば既定の接頭辞を指す >>32 3.、ということになっているようです。

[52] 接頭辞と IRI の束縛の方法、既定の接頭辞、接頭辞と : が無い場合の解釈といったような CURIE の実際の意味は、ホスト言語によって規定されることになっています。
[53] なので CURIE 自体はほとんど中身のない仕様ですね・・・。なんで何年もかかってこの程度のことも決められないのか・・・。

[62] RDFa 1.1 では定義が少し違っています。 >>58

[111] >>104 のように接頭辞: もなければ CURIE でなく「」とみなす場合があります。

参照

[42] RDFa 1.0 世代の定義によれば、参照RFC 3987 irelative-ref です >>32 3.。 つまり IRI参照の任意の相対参照であり、空文字列でもあり得ます。

[43] QName参照に相当する部分 (局所部分) は NCName でしたので、 それに比べると随分と制約が緩くなっています。 もっとも IRI参照もそれなりに制約があるので、 どんな文字列でも良くなったわけではありません。
[69] RFC 3987IRI に対して ABNF 構文で表現されない制約もいくつか課していますが、 CURIEABNF 構文を流用しているだけなので、それらは適用されないと解するのが自然でしょう。

[70] RDFa 1.1 の定義は次のように変更されています。

reference   ::= ( ipath-absolute / ipath-rootless / ipath-empty ) [ "?" iquery ] [ "#" ifragment ]

[71] これは >>42 の定義と比べると、

この2つ目の変更で >>55 の特徴が失われています。

評価

[75] RDFa 1.1 によると CURIE の評価には次の情報が必要です >>58

[80] RDFa 1.1 では次のように定義されています >>58

[87] なぜ >>85 が禁止されていないのかは謎です。

[88] CURIE から IRI への展開は次のように定義されています >>58

  1. [89] 接頭辞空文字列である場合、 >>77 が定義されていれば非妥当であり、定義されていればその IRI参照を連結したものが展開結果の IRI です。
  2. [90] 空でない接頭辞がある場合、 >>76 にその接頭辞が含まれていればその IRI参照を連結したものが展開結果の IRI となり、含まれていなければ非妥当です。

[92] この辺の RDFa 1.1 仕様の規定はあまり正確に記述されていないようで、無視とは何なのか、 CURIE ではないとは何を意味するのかなどはっきりしません。
[93] >>78>>79 はなぜかこの展開の処理モデルで使われていません。

URL との混在

[98] CURIEIRI を短く表現するためのものですが、完全な IRICURIE の両方を混在させられると定義している場所も多くあります。

安全 CURIE

[44] 安全 CURIE (safe_curie) は、 CURIE[] で括ったものです。 >>32 3., >>58

[46] RDFa 1.0 以前から元々 IRI が認められていた属性などでは、 IRI または安全 CURIE のどちらかを使うことが認められていて、構文的に区別可能になっています。

[47] RFC 3986RFC 3987 に従えば URIIRI[ ではじまることはないので、必ず区別できます。 (現実には [相対URL に使われることはあり得るので、現実世界とは互換性がありませんが。)

[73] RDFa 1.1 では CURIEIRI は区別可能であるとして、 安全 CURIE は後方互換性のためのものという扱いになっています。 >>58 接頭辞が宣言されていなければ IRI とみなすから両立可能ということのようです。

[74] それだと接頭辞が宣言されていないのをエラーにできないですけどそんなのでいいのでしょうか・・・。 それにそもそも既に URL に使われている属性を流用するためにわざわざ安全 CURIE を作ったのですから、 RDFa 以外の用途に使われていた属性なわけで、それを CURIE でも OK にすると RDFa に対応していない実装と対応している実装で解釈が違ってしまうわけで・・・。

[112] CURIE とは別に、RDFa の一部の属性では「 (term) 」を指定することができます。 この接頭辞: もない CURIE と形式的には区別できませんが、 >>105 のように CURIE ではなくと解釈することになっています。

[113] なぜ敢えて CURIE「無接頭辞」写像ではなく別のものとして定義しているのか謎ですが・・・。

[114] は、 XML名前空間1.0 2e NCNameStartChar からはじまり、 XML名前空間1.0 2e NCNameChar/ が0文字以上後に続くような文字列です。 言い換えると、 XML名前空間1.0 2e NCName で2文字目以降に / を認めたものです。 >>115

[116] XML名前空間1.0 2eXML 1.0 5e よりも前のものです。
[117] この辺の仕様書の文面とリンクに齟齬がありますが、全体として規定に矛盾はありません。

[118] は次のように処理します >>115

  1. [119] 局所既定語彙があれば、その IRIを連結したものを返します。
  2. [120] そうでなく局所語写像が含まれていれば、その IRI を返します。 ここで比較はまず大文字・小文字区別して行い、一致がなければ大文字・小文字不区別で探します。
  3. [121] そうでなければ無視しなければなりません

[122] ここでの大文字小文字を区別しない比較がどのように行われるべきなのかは明記されていません。

SafeCURIEorCURIEorIRI

[99] RDFa 1.1 で用いられるデータ型 SafeCURIEorCURIEorIRI は、 RFC 3987 IRICURIE安全CURIEのいずれもが使えることを表します。ここでいう IRI は (文脈的に) IRI参照のことであるようです。

[103] このデータ型の値は次のように処理します >>97

  1. [100] 四角括弧で囲まれていれば、安全CURIEとして評価して得られた IRI を用います。妥当でなければ、この値は無視しなければなりません
  2. [101] そうでなく妥当な CURIE なら、評価して得られた IRI を使います。
  3. [102] そうでないなら IRI とみなします。

TERMorCURIEorAbsIRI

[104] RDFa 1.1 で用いられるデータ型 TERMorCURIEorAbsIRI は、 (term) RFC 3987 絶対IRICURIE のいずれもが使えることを表します。

[105] このデータ型の値は次のように処理します >>97

  1. [106] 値がなら、そのように処理します。その結果無視されることもあります。
  2. [107] 値が妥当な CURIE なら、評価して得られた IRI を使います。
  3. [108] 値が絶対IRI なら、それを使います。
  4. [109] それ以外なら、この値は無視します。

[110] ところで RFC 3987 では「絶対IRI (absolute IRI) 」という語は明確に定義されていません。 生成規則 absolute-IRI素片識別子を含みません。本当にそれでいいのでしょうか。 RDF 界では素片識別子もよく使っていますが・・・。

XHTML モジュール

RDFa 1.0 世代

[54] CURIE 関係のデータ型XHTML m12n の形式に則って定義されています (>>32 A.)。

CURIE
CURIE
CURIEs
CURIE空白で区切って並べたもの。
SafeCURIE
安全 CURIE
SafeCURIEs
安全 CURIE空白で区切って並べたもの。
URIorSafeCURIE
URI (xs:anyURI) または安全 CURIE
URIorSafeCURIEs
URI (xs:anyURI) または安全 CURIE空白で区切って並べたもの。

RDFa 1.1

[126] RDFa 1.1 版の CURIEXHTML m12n の形式で定義されています >>125

CURIE
CURIE
CURIEs
CURIE空白で区切って並べたもの。
CURIEorIRI
CURIEIRI
CURIEorIRIs
CURIEIRI空白で区切って並べたもの。
SafeCURIE
安全CURIE
SafeCURIEorCURIEorIRI
安全CURIECURIEIRI
SafeCURIEorCURIEorIRIs
安全CURIECURIEIRI空白で区切って並べたもの。
TERM
TERMorCURIEorAbsIRI
CURIE絶対IRI
TERMorCURIEorAbsIRIs
CURIE絶対IRI空白で区切って並べたもの。

[127] 空白XMLS と同じ定義になっています。

[128] IRIRFC 3987 IRI参照と思われます。 XML Schema では xsd:anyURI となっています >>125

歴史

RDFa 1.0

[1] CURIE Syntax 1.0 <http://www.w3.org/2001/sw/BestPractices/HTML/2005-10-27-CURIE>

[2] CURIE Syntax 1.0 <http://www.w3.org/2001/sw/BestPractices/HTML/CURIE>

[4] CURIE Syntax 1.0 <http://htmlwg.mn.aptest.com/htmlwg/curie/> (名無しさん 2006-06-17 09:55:56 +00:00)

[6] CURIE Syntax 1.0 (2007-03-08 00:39:48 +09:00 版) <http://www.w3.org/TR/2007/WD-curie-20070307/>

タイミングが前後しているものの、旧 HTML WG (新 XHTML2 WG の最後の TR)。 (名無しさん 2007-03-08 11:45:21 +00:00)

[8] Fwd: Towards a TAG consideration of CURIEs (Steven Pemberton 著, 2007-03-30 21:07:05 +09:00 版) <http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2007Mar/0112> (名無しさん 2007-04-01 03:29:51 +00:00)

[9] CURIE Syntax 1.0 (2007-04-03 06:45:50 +09:00 版) <http://www.w3.org/MarkUp/2007/ED-curie-20070402/> (名無しさん 2007-04-07 14:07:03 +00:00)

[10] XHTML Document Development Area (2007-04-07 01:58:13 +09:00 版) <http://www.w3.org/MarkUp/Drafts/#curie> (名無しさん)

[11] Weekly XHTML2 WG Teleconference -- 23 May 2007 (2007-05-24 00:02:59 +09:00 版) <http://www.w3.org/2007/05/23-xhtml-minutes.html#item05>

こいつら今更なにをwwwwwwwwwwwwwwww (名無しさん 2007-05-27 10:42:00 +00:00)

[12] CURIE Syntax 1.0 (2007-09-06 05:42:20 +09:00 版) <http://www.w3.org/MarkUp/2007/ED-curie-20070905/> (名無しさん)

[13] >>12 role とか access に定義がこぴぺされたわけですが・・・。 HRRI といい、どうして過ちを繰り返すのでしょうかね? (名無しさん)

[14] CURIE Syntax 1.0 (2007-11-26 19:23:55 +09:00 版) <http://www.w3.org/TR/2007/WD-curie-20071126/> (名無しさん)

[15] CURIE Syntax 1.0 (2007-12-05 07:14:03 +09:00 版) <http://www.w3.org/MarkUp/2007/ED-curie-20071204/> (名無しさん)

[16] CURIE Syntax 1.0 (2007-12-06 06:06:03 +09:00 版) <http://www.w3.org/MarkUp/2007/ED-curie-20071205/> (名無しさん)

[17] CURIE Syntax 1.0 (2008-01-23 05:56:50 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20080122/> (名無しさん)

[18] CURIE Syntax 1.0 (2008-03-19 02:45:43 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20080318/> (名無しさん)

[19] CURIE Syntax 1.0 (2008-04-04 00:45:36 +09:00 版) <http://www.w3.org/TR/2008/WD-curie-20080402/> (名無しさん)

[20] CURIE Syntax 1.0 (2008-05-09 00:10:54 +09:00 版) <http://www.w3.org/TR/2008/WD-curie-20080506/> (名無しさん)

[21] CURIE Syntax 1.0 (2008-06-18 00:59:28 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20080617/> (名無しさん)

[22] CURIE Syntax 1.0 (2008-09-25 02:27:05 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20080924/> (名無しさん)

[23] CURIE Syntax 1.0 (2008-10-09 02:30:40 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20081008/> (名無しさん)

[24] CURIE Syntax 1.0 (2008-10-19 05:56:53 +09:00 版) <http://www.w3.org/MarkUp/2008/ED-curie-20081018/>

[25] CURIE Syntax 1.0 ( 版) <http://www.w3.org/MarkUp/2008/ED-curie-20081023/>

[27] CURIE Syntax 1.0 ( 版) <http://www.w3.org/TR/2009/CR-curie-20090116/>

[26] CURIE Syntax 1.0 ( 版) <http://www.w3.org/MarkUp/2009/ED-curie-20090422/>

[28] RDFa in XHTML: Syntax and Processing ( 版) <http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014/#s_curies>

[29] 結局勧告になった唯一の CURIE の定義がこれか。

[32] CURIE Syntax 1.0 ( 版) <http://www.w3.org/TR/2010/NOTE-curie-20101216/>

RDFa 1.1

[57] RDFa Core 1.1 - Second Edition ( ( 版)) <http://www.w3.org/TR/rdfa-core/#h2_s_curies>

メモ

[30] RIF Datatypes and Built-Ins 1.0 ( 版) <http://www.w3.org/TR/2010/REC-rif-dtb-20100622/#sec-base>

[31] RIF Production Rule Dialect ( 版) <http://www.w3.org/TR/2010/REC-rif-prd-20100622/#Namespaces>

[7] WEBTECH - webtech:vantguarde (2007-03-09 08:39:23 +09:00 版) <http://web.g.hatena.ne.jp/vantguarde/20070308#1173357938> (名無しさん 2007-03-08 23:41:30 +00:00)

[131] JSON-LD 1.0 ( ( 版)) <http://www.w3.org/TR/json-ld/#compact-iris>

[132] IRC logs: freenode / #whatwg / 20140403 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20140403>

[133] The Open Graph protocol ( ( 版)) <http://ogp.me/#types>

[5] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema ( 版) <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#a18_3_12CURIE>

[86] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema ( 版) <http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#a18_3_28safeCURIE>

[91] Mason/Mason-draft-2.md at master · JornWildt/Mason ( 版) <https://github.com/JornWildt/Mason/blob/master/Documentation/Mason-draft-2.md>

[134] Web Annotation Vocabulary () <https://w3c.github.io/web-annotation/vocab/wd/#h-extensions>

If there is a property in one of the ontologies that are already included in the context, then it is recommended to use a CURIE, the namespace and property name separated by a : character, as the JSON-LD key rather than creating a new context.

[135] EPUB Packages 3.1 () <https://www.w3.org/Submission/2017/SUBM-epub-packages-20170125/Overview.html#h-sec-property-syntax>

[136] >>135 CURIE とは呼んでいませんが、 CURIE のようなものが定義されています。

[137] OSLC Core Version 3.0. Part 6: Resource Shape () <http://docs.oasis-open.org/oslc-core/oslc-core/v3.0/cs01/part6-resource-shape/oslc-core-v3.0-cs01-part6-resource-shape.html>

Prefixed Name

The compact IRI [IRI] of the defined property being described in the current row of the table. This corresponds to the oslc:propertyDefinition property.

[138] Activity Streams 2.0 () <https://w3c.github.io/activitystreams/core/#h-compact-uris>

The JSON-LD syntax supports the use of "Compact URIs". A "Compact URI" is an alternative encoding of a URI that uses a defined prefix to simplify serialization.