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

  1. Read the logged stack trace to find the failing resolution operation
  2. Correct the reference-date configuration or the offending rule
  3. 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

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)