Спецификация говорит да. (выделено мной)
Примечание:
Типы данных даты и времени, описанные в этой рекомендации были вдохновлены [ISO 8601]. «0001» — это лексическое представление 1-й год нашей эры (1 г. н. э., иногда пишется «1 г. н. э.» или «1 г. н. э.»). AD"). Года 0 не существует, и "0000" не является допустимым лексическим представление. «-0001» — лексическое представление года 1. До нашей эры (1 г. до н.э., иногда пишется «1 г. до н.э.»).
Вы можете представить отрицательную дату со знаком минус, но есть путаница в том, что это означает. XSD 1.0 принял ISO 8601, но не заметил, что в ISO 8601 годом до 0001 является 0000 (что соответствует соглашению, используемому астрономами), тогда как в календаре до нашей эры / нашей эры, используемом историками, годом до 1 AD является 1 до н.э. XSD 1.1 это исправил, поэтому в 1.1 стоит нулевой год. Конечно, это влияет только на вещи, если вы вычисляете интервал между двумя датами.
Еще одна вещь, которую следует отметить, это то, что в ISO 8601 используется пролептический григорианский календарь (в XSD 1.0 с ошибкой написано как «пролептический»). Это проецирует текущие правила високосного года в прошлое, а не использует правила, которые были текущими в то время. (И, конечно же, он также использует современные соглашения, такие как начало года 1 января, а не 21 марта). Представление даты до нашей эры в ISO 8601 не соответствует ярлыку, который современные историки использовали бы для той же даты. (И это явно не соответствует ярлыку, которым пользовались люди в то время — они не знали, когда придет Мессия.)
Таким образом, вы можете использовать отрицательные даты ISO 8601, но вы должны знать, что правила для нулевого года и для тех лет, для которых 29 февраля, могут быть не совсем такими, как вы ожидаете.
Спасибо. Кроме того, кто-то упомянул, что Protege не поддерживает это, что меня также беспокоило, но я только что попробовал, и, к моему большому удивлению, Protege принимает его как допустимое значение dateTime, и Pellet Reasoner также принимает его.
Не уверен. Из w3.org/TR/owl2-syntax/#Time_Instants : «Реализация OWL 2 МОЖЕТ поддерживать все лексические формы этих типов данных; однако она ДОЛЖНА поддерживать по крайней мере лексические формы, перечисленные в Разделе 5.4 Типы данных схемы XML. " Далее, из w3.org/TR/xmlschema11-2/#partial-implementation: «Все минимально соответствующие процессоры должны поддерживать неотрицательные значения года меньше 10000». — Однако Protege, Pellet и HermiT поддерживают отрицательные
xsd:dateTime
s.