stanfordnlp/CoreNLP · info
ex
Error message
ex
What it means
Companion log line for the catch at TimeExpressionExtractorImpl.java:293: the caught exception from temporal resolution is logged via logger.warn(ex) after the 'Error resolving <temporal>' message, providing the stack trace for why grounding the temporal failed.
Solutions
- Read the logged stack trace to find the failing resolution operation
- Correct the reference-date configuration or the offending rule
- Upgrade CoreNLP if the failure is in stock SUTime logic
Defensive patterns
Strategy: try-catch
Try / catch
try {
resolve(annotation, timeExpressions, docDate);
} catch (Exception ex) {
log.warn("Temporal resolution failed", ex);
} Prevention
- Correlate this stack trace with the preceding 'Error resolving' line
- Test resolution against many reference dates (month/year boundaries) in CI
- Upgrade CoreNLP for known relative-date resolution fixes
When it happens
Trigger: Same path as 1625: resolveTimeExpression catches while grounding a temporal against the reference date, with verbose logging enabled.
Common situations: Diagnosing why relative time expressions remain unresolved in output TIMEX3 values; the stack trace pinpoints the failing SUTime operation.
Related errors
AI-assisted analysis of stanfordnlp/CoreNLP@1b7edd19c4 (2026-09-10).
Data as JSON: /api/errors/6dad97369235e791.
Report an issue: GitHub.
Appendix: source
Thrown at src/edu/stanford/nlp/time/TimeExpressionExtractorImpl.java:294
private void resolveTimeExpression(CoreMap annotation, TimeExpression te, SUTime.Time docDate) {
SUTime.Temporal temporal = te.getTemporal();
if (temporal != null) {
// TODO: use correct time for anchor
try {
int flags = timexPatterns.determineRelFlags(annotation, te);
//int flags = 0;
SUTime.Temporal grounded = temporal.resolve(docDate, flags);
if (grounded == null) {
logger.debug("Error resolving " + temporal + ", using docDate=" + docDate);
}
if (grounded != temporal) {
te.origTemporal = temporal;
te.setTemporal(grounded);
}
} catch (Exception ex) {
if (options.verbose) {
logger.warn("Error resolving " + temporal, ex);
logger.warn(ex);
}
}
}
}
private void resolveTimeExpressions(CoreMap annotation, List<TimeExpression> timeExpressions, SUTime.Time docDate) {
for (TimeExpression te:timeExpressions) {
resolveTimeExpression(annotation, te, docDate);
}
}
private static SUTime.Time findReferenceDate(List<TimeExpression> timeExpressions) {
// Find first full date in this annotation with year, month, and day
for (TimeExpression te:timeExpressions) {
SUTime.Temporal t = te.getTemporal();
if (t instanceof SUTime.Time) {
if (t.isGrounded()) {
return t.getTime();View on GitHub (pinned to 1b7edd19c4)