/** * Gets the calendar value of the supplied literal. The fallback value is returned in case * {@link Literal#calendarValue()} throws a {@link NumberFormatException}. * * @param l * The literal to get the calendar value for. * @param fallback * The value to fall back to in case no calendar value could gotten from the literal. * @return Either the literal's calendar value, or the fallback value. */ public static XMLGregorianCalendar getCalendarValue(Literal l, XMLGregorianCalendar fallback) { try { return l.calendarValue(); } catch (IllegalArgumentException e) { return fallback; } }
/** * Gets the calendar value of the supplied literal. The fallback value is returned in case * {@link Literal#calendarValue()} throws a {@link NumberFormatException}. * * @param l * The literal to get the calendar value for. * @param fallback * The value to fall back to in case no calendar value could gotten from the literal. * @return Either the literal's calendar value, or the fallback value. */ public static XMLGregorianCalendar getCalendarValue(Literal l, XMLGregorianCalendar fallback) { try { return l.calendarValue(); } catch (IllegalArgumentException e) { return fallback; } }
@Override protected Value evaluate(ValueFactory valueFactory, Value arg) throws ValueExprEvaluationException { if (!(arg instanceof Literal)) { throw new ValueExprEvaluationException("Argument must be a literal"); } return valueFactory.createLiteral( ((Literal)arg).calendarValue().toGregorianCalendar().getTimeInMillis()); } }
@Override protected Value evaluate(ValueFactory valueFactory, Value arg1, Value arg2) throws ValueExprEvaluationException { if (!(arg1 instanceof Literal) || !(arg2 instanceof Literal)) { throw new ValueExprEvaluationException("Both arguments must be literals"); } Literal date = (Literal)arg1; Literal format = (Literal)arg2; SimpleDateFormat formatter = new SimpleDateFormat(format.getLabel()); String value = formatter.format(date.calendarValue().toGregorianCalendar().getTime()); return valueFactory.createLiteral(value); } }
private static long longValueOfTimeStamp(Literal ts) { if (XMLDatatypeUtil.isCalendarDatatype(ts.getDatatype())) { return ts.calendarValue().toGregorianCalendar().getTimeInMillis(); } return ts.longValue(); }
private Instant convertToInstant(Literal literal) { String stringVal = literal.getLabel(); IRI dataType = literal.getDatatype(); checkArgument(dataType.equals(XMLSchema.DATETIME) || dataType.equals(XMLSchema.DATE), String.format("Invalid data type for date time. Data Type must be of type %s or %s .", XMLSchema.DATETIME, XMLSchema.DATE)); checkArgument(XMLDatatypeUtil.isValidDateTime(stringVal) || XMLDatatypeUtil.isValidDate(stringVal), "Invalid date time value."); return literal.calendarValue().toGregorianCalendar().toInstant(); }
/** * This method returns the end times of all period windows containing the time contained in * the BindingSet. * * @param metadata * @return Set of period bin end times */ private Set<Long> getBinEndTimes(PeriodicQueryMetadata metadata, VisibilityBindingSet bs) { Set<Long> binIds = new HashSet<>(); try { String timeVar = metadata.getTemporalVariable(); Value value = bs.getBinding(timeVar).getValue(); Literal temporalLiteral = (Literal) value; long eventDateTime = temporalLiteral.calendarValue().toGregorianCalendar().getTimeInMillis(); return getEndTimes(eventDateTime, metadata.getWindowSize(), metadata.getPeriod()); } catch (Exception e) { log.trace("Unable to extract the entity time from BindingSet: " + bs); } return binIds; }
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
private static Literal operationsBetweenDurationAndCalendar(Literal durationLit, Literal calendarLit, MathOp op) { Duration duration = XMLDatatypeUtil.parseDuration(durationLit.getLabel()); XMLGregorianCalendar calendar = (XMLGregorianCalendar) calendarLit.calendarValue().clone(); try { if(op == MathOp.PLUS) { //op:add-yearMonthDuration-to-dateTime and op:add-dayTimeDuration-to-dateTime and //op:add-yearMonthDuration-to-date and op:add-dayTimeDuration-to-date and //op:add-dayTimeDuration-to-time calendar.add(duration); return SimpleValueFactory.getInstance().createLiteral(calendar); } else { throw new ValueExprEvaluationException("Only addition is defined between xsd:duration and calendar datatypes."); } } catch (IllegalStateException e) { throw new ValueExprEvaluationException(e); } }
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
XMLGregorianCalendar calValue = literal.calendarValue();
private static Literal operationsBetweenDurationAndCalendar(Literal durationLit, Literal calendarLit, MathOp op) { Duration duration = XMLDatatypeUtil.parseDuration(durationLit.getLabel()); XMLGregorianCalendar calendar = (XMLGregorianCalendar) calendarLit.calendarValue().clone(); try { if(op == MathOp.PLUS) { //op:add-yearMonthDuration-to-dateTime and op:add-dayTimeDuration-to-dateTime and //op:add-yearMonthDuration-to-date and op:add-dayTimeDuration-to-date and //op:add-dayTimeDuration-to-time calendar.add(duration); return SimpleValueFactory.getInstance().createLiteral(calendar); } else { throw new ValueExprEvaluationException("Only addition is defined between xsd:duration and calendar datatypes."); } } catch (IllegalStateException e) { throw new ValueExprEvaluationException(e); } }
private static Literal operationsBetweenCalendarAndDuration(Literal calendarLit, Literal durationLit, MathOp op) { XMLGregorianCalendar calendar = (XMLGregorianCalendar) calendarLit.calendarValue().clone(); Duration duration = XMLDatatypeUtil.parseDuration(durationLit.getLabel()); try { switch (op) { case PLUS: //op:add-yearMonthDuration-to-dateTime and op:add-dayTimeDuration-to-dateTime and //op:add-yearMonthDuration-to-date and op:add-dayTimeDuration-to-date and //op:add-dayTimeDuration-to-time calendar.add(duration); return SimpleValueFactory.getInstance().createLiteral(calendar); case MINUS: //op:subtract-yearMonthDuration-from-dateTime and op:subtract-dayTimeDuration-from-dateTime and //op:subtract-yearMonthDuration-from-date and op:subtract-dayTimeDuration-from-date and //op:subtract-dayTimeDuration-from-time calendar.add(duration.negate()); return SimpleValueFactory.getInstance().createLiteral(calendar); case MULTIPLY: throw new ValueExprEvaluationException("Multiplication is not defined between xsd:duration and calendar values."); case DIVIDE: throw new ValueExprEvaluationException("Division is not defined between xsd:duration and calendar values."); default: throw new IllegalArgumentException("Unknown operator: " + op); } } catch (IllegalStateException e) { throw new ValueExprEvaluationException(e); } }
private static Literal operationsBetweenCalendarAndDuration(Literal calendarLit, Literal durationLit, MathOp op) { XMLGregorianCalendar calendar = (XMLGregorianCalendar) calendarLit.calendarValue().clone(); Duration duration = XMLDatatypeUtil.parseDuration(durationLit.getLabel()); try { switch (op) { case PLUS: //op:add-yearMonthDuration-to-dateTime and op:add-dayTimeDuration-to-dateTime and //op:add-yearMonthDuration-to-date and op:add-dayTimeDuration-to-date and //op:add-dayTimeDuration-to-time calendar.add(duration); return SimpleValueFactory.getInstance().createLiteral(calendar); case MINUS: //op:subtract-yearMonthDuration-from-dateTime and op:subtract-dayTimeDuration-from-dateTime and //op:subtract-yearMonthDuration-from-date and op:subtract-dayTimeDuration-from-date and //op:subtract-dayTimeDuration-from-time calendar.add(duration.negate()); return SimpleValueFactory.getInstance().createLiteral(calendar); case MULTIPLY: throw new ValueExprEvaluationException("Multiplication is not defined between xsd:duration and calendar values."); case DIVIDE: throw new ValueExprEvaluationException("Division is not defined between xsd:duration and calendar values."); default: throw new IllegalArgumentException("Unknown operator: " + op); } } catch (IllegalStateException e) { throw new ValueExprEvaluationException(e); } }