[40] [[schema.org]] は、 [[ISO 8601]] に由来するいくつかの[[日時]]の形式と、
独自の[[反復時間間隔]]の形式を定義しています。

* 仕様書

[REFS[
- [1] [CITE@en[Date - schema.org]] ([TIME[2014-05-17 02:40:41 +09:00]] 版) <http://schema.org/Date>
- [4] [CITE@en[Time - schema.org]] ([TIME[2014-05-17 02:46:47 +09:00]] 版) <http://schema.org/Time>
- [8] [CITE@en[DateTime - schema.org]] ([TIME[2014-05-17 02:55:11 +09:00]] 版) <http://schema.org/DateTime>
- [13] [CITE@en[temporal - schema.org]] ([TIME[2014-05-17 03:03:05 +09:00]] 版) <http://schema.org/temporal>
- [21] [CITE@en[Duration - schema.org]] ([TIME[2014-05-17 03:21:52 +09:00]] 版) <http://schema.org/Duration>
- [24] [CITE@en[openingHours - schema.org]] ([TIME[2014-05-17 03:25:08 +09:00]] 版) <http://schema.org/openingHours>
]REFS]

* [CODE[Date]]

[2] [[日付]]型 [DFN[[CODE[[[Date]]]]]] ([CODE[[[http://schema.org/Date]]]]) は、
「[[ISO 8601]] 日付書式の[[日付]]の値」と説明されており、 [[Wikipedia]] の [[ISO 8601]]
の記事にリンクしています [SRC[>>1]]。具体的にどの表現を認めるのかは言及されていませんし、
[[情報交換の当事者間の合意]]に相当するものはありません。

[3] そのまま解釈すると、また [[schema.org]] は明らかに2004年以降のものですから、
[[ISO 8601:2004]] による[[暦日付]]、[[通日日付]]、[[週日付]]を指定することができ、
[[基本書式]]でも[[拡張書式]]でも良く、[[精度を削減した表現]]でも良く、
更に[[情報交換の当事者間の合意]]があれば、1582年以前の[[年]]や[[展開表現]]を用いても良い、
ということになります。

[10] >>9 より [[ISO 8601:2000]] に従うものと解釈すると、更に[[切り詰めた表現]]も使えると解釈できます。

;; [7] [[ISO 8601の日付形式]]の項を参照してください。

* [CODE[Time]]

[5] [[時刻]]型 [DFN[[CODE[[[Time]]]]]] ([CODE[[[http://schema.org/Time]]]]) は、
[CODE[hh:mm:ss'''['''Z|(+|-)hh:mm''']''']] 形式の[[時刻]]を表すものと定義されており、
[[XML Schemaデータ型]] ([[XML Schema 1.0]]) の [CODE[[[xs:time]]]]
が参照されています [SRC[>>4]]。

;; [6] [CODE[[[xs:time]]]] の項を参照してください。

;; [42] [CODE[[[xs:time]]]] は [[ISO 8601]] の[[プロファイル]]です。

[43] [[秒の小数部]]には言及されていませんが、制限する意図があるのかどうかは不明です。

* [CODE[DateTime]]

[9] [[日時]]型 [DFN[[CODE[[[DateTime]]]]]] ([CODE[[[http://schema.org/DateTime]]]]) は、
[CODE['''['''-''']'''CCYY-MM-DDThh:mm:ss'''['''Z|(+|-)hh:mm''']''']] 形式の[[日時]]を表すものと定義されており、
[[ISO 8601]] 5.4 が参照されています [SRC[>>8]]。 [[ISO 8601:2004]] には 5.4 がないので、
[[ISO 8601:2000]] を参照しているものと解釈せざるを得ません。

[11] [[ISO 8601:2000]] 5.4 では様々な表現を定義しているので、 >>9 の書式はそのうちの一種を選択したものと解釈するべきでしょうか。
「[」...「]」は省略可能、「(」...「|」...「)」は選択を表すと解するのが適切でしょう。

;; [12] この解釈によると[[暦日付]]は使えますが、[[通日日付]]や[[週日付]]は使えません。
[[基本書式]]は認められておらず、[[拡張書式]]でなければなりません。
[[展開表現]]の場合、 [CODE[[[+]]]] は使えません。5桁以上の[[年]]を認めているのか不明瞭ですが、
文字通り解釈すると認められないことになります。[[精度を削減した表現]]や[[小数付き表現]]や[[切り詰めた表現]]も同様です。
[[時差]]の[[分]]の省略も同様です。[[ハイフン]]と[[マイナス]]はいずれも [CODE[[[-]]]]
であり、 [CODE[[[T]]]] と [CODE[[[Z]]]] はいずれも[[大文字]]でなければならないと解するのが適切でしょう。

* [CODE[temporal]]

[14] [CODE[[[http://schema.org/temporal]]]] の値は [CODE[[[DateTime]]]] とされていますが、
説明は時間的範囲となっており、 [[ISO 8601]] [[時間間隔]]書式と記載されています [SRC[>>13]]。

[15] この意味するところは謎ですが、 >>9 かつ[[時間間隔]]と解釈できる表現は [[ISO 8601]]
には無いので、 [CODE[[[DateTime]]]] 型としたのが誤りで [[ISO 8601]] の[[時間間隔]]を指定できると解すべきなのでしょうか。

[16] 説明には「e.g. for a 2011 census dataset, the year 2011」とあり、その意味は不明瞭ですが、
[CODE[''2011'']] が値の一例とも解し得ます。実際 [[schema.org]] へ統合された元の提案 >>17
には [CODE[<span itemprop="temporal">2011</span>]] という例が示されています。ここから推察すると、
[[時間間隔]]を[[日時]]の表現によって記述したもの、ということになるのでしょうか。ただし >>9 と >>12
の構文の解釈には一致しません。

[18] なお >>17 には [CODE[[[temporal]]]] が [CODE[[[dcterms:temporal]]]] に相当するものだとの記述がありますが、
>>19 によればその[[値域]]は [CODE[[[dcterms:PeriodOfTime]]]] となっており、これは開始と終了により決まる[[時間間隔]]となっています。
([[RDF]] [[Class]] なので、構文は決められていません。) ここから、意味的にはやはり [[ISO 8601]]
の[[時間間隔]]の表現が求められていると解釈したいところです。

[REFS[
- [17] [CITE@en[WebSchemas/Datasets - W3C Wiki]] ([TIME[2014-04-10 12:11:38 +09:00]] 版) <http://www.w3.org/wiki/WebSchemas/Datasets>
- [19] [CITE@en[DCMI Metadata Terms]] ([TIME[2014-05-17 03:12:57 +09:00]] 版) <http://dublincore.org/documents/2012/06/14/dcmi-terms/?v=terms#temporal>
- [20] [CITE@en[DCMI Metadata Terms]] ([TIME[2014-05-17 03:13:23 +09:00]] 版) <http://dublincore.org/documents/2012/06/14/dcmi-terms/?v=terms#PeriodOfTime>
]REFS]

* [CODE[Duration]]

[22] [DFN[[CODE[[[Duration]]]]]] ([CODE[[[http://schema.org/Duration]]]]) は、
[[ISO 8601の時間長形式]]とされています ([[Wikipedia]] にリンクされています) [SRC[>>21]]。

[23] そのまま解釈すると、 [[ISO 8601]] の[[時間長]]の表現が認められており、
[[情報交換の当事者間の合意]]があれば[[精度を削減した表現]]や[[小数付き表現]]や代替形式も認められるということになります。

;; [49] [[Data-Vocabulary.orgの日時形式]]も似たような定義でした。

* [CODE[openingHours]]

[25] [CODE[[[http://schema.org/openingHours]]]] の値は [CODE[[[Duration]]]]
になっていますが、説明文はまったく違う構文を定義しています [SRC[>>24]]。
[[特性]]の意味的にも [[Duration]] では無く[[反復時間間隔]]の一種のようです。

[26] 値は、[RUBYB[毎週の時刻の範囲]@en[weekly time range]]を指定するものです [SRC[>>24]]。
- [27] [[曜日]]の後に[[時刻]]を指定します [SRC[>>24]]。
- [28] 例示 [SRC[>>24]] によるとその中間に [CODE[[[U+0020]]]] を置くようです。その他の[[空白文字]]が認められているのかは不明です。
- [29] [[曜日]]は [CODE[Mo]], [CODE[Tu]], [CODE[We]], [CODE[Th]], [CODE[Fr]], [CODE[Sa]], [CODE[Su]] のいずれかの2文字列で表します [SRC[>>24]]。
-- [30] [[大文字]]と[[小文字]]の区別があるかは明記されていません。
-- [31] [CODE[[[,]]]] で列挙できます [SRC[>>24]]。
- [34] [[時刻]]は[[24時間制]]です [SRC[>>24]]。
-- [35] [CODE[24:00]] という値が認められているのかは不明です。
-- [36] 例示 [SRC[>>24]] によると[[時刻]]とその前の[[空白]]は省略できるようです。
-- [46] 明記されていませんが、意味的に、[[時刻]]1つだけで範囲になっていない指定はできなそうです。
- [32] [[曜日]]、[[時刻]]とも [CODE[[[-]]]] で範囲指定できます [SRC[>>24]]。
-- [33] [CODE[Su-Tu]] や [CODE[23:00-02:00]] のような指定ができるかは明記されていません。
-- [44] [CODE[[[-]]]] と [CODE[[[,]]]] を併用できるとは明記されていません。
- [45] 重複が認められるか認められないか明記されていません。

[EG[
[37] 次の例 [SRC[>>24]] は火曜日と木曜日の16時から20時までを表します。

[PRE(HTML code)[
<time itemprop="openingHours" datetime="Tu,Th 16:00-20:00">Tuesdays and Thursdays 4-8pm</time>.
]PRE]
]EG]

[EG[
[38] 次の例は毎日営業していることを表します [SRC[>>24]]。

[PRE(HTML code)[
<time itemprop="openingHours" datetime="Mo-Su">Monday through Sunday, all day</time>
]PRE]

;; [39] [[時刻]]が省略されていますが、24時間営業を表しているのかは不明です。
]EG]

;; [41] これは [[ISO 8601]] とは関係のない独自の形式です。


[47] [CITE@en[OpeningHoursSpecification - schema.org]]
( ([TIME[2014-05-22 05:21:53 +09:00]] 版))
<http://schema.org/OpeningHoursSpecification>

[48] [CITE@en[DayOfWeek - schema.org]]
( ([TIME[2014-05-22 05:22:36 +09:00]] 版))
<http://schema.org/DayOfWeek>