Negative years seems to be off by one:
?- rdf_equal(xsd:dateTime, Type), xsd_time_string(DateTime, Type, '-2999-01-01T00:00:00Z').
Type = 'http://www.w3.org/2001/XMLSchema#dateTime',
DateTime = date_time(-3000, 1, 1, 0, 0, 0, 0).
Negative years that consist of more than four digits are not parsed:
?- rdf_equal(xsd:dateTime, Type), xsd_time_string(DateTime, Type, '-222999-12-01T00:00:
ERROR: Syntax error: xsd_time