/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.virtuoso;
import com.mysema.query.types.Ops;
import com.mysema.rdfbean.model.SPARQLTemplates;
public class VirtuosoSPARQLTemplates extends SPARQLTemplates {
public static final SPARQLTemplates DEFAULT = new VirtuosoSPARQLTemplates();
public VirtuosoSPARQLTemplates() {
add(Ops.UPPER, "bif:upper({0})");
add(Ops.LOWER, "bif:lower({0})");
add(Ops.CONCAT, "bif:concat({0},{1})");
add(Ops.SUBSTR_1ARG, "bif:subseq({0},{1s})");
add(Ops.SUBSTR_2ARGS, "bif:substring({0},{1s}+1,{2s})");
add(Ops.TRIM, "bif:trim({0})");
add(Ops.EQ_IGNORE_CASE, "bif:lower({0}) = bif:lower({1})");
add(Ops.STRING_IS_EMPTY, "{0} like ''");
add(Ops.LIKE, "{0} like {1}");
add(Ops.STRING_LENGTH, "bif:length({0})");
add(Ops.INDEX_OF, "bif:locate({1},{0})-1");
add(Ops.INDEX_OF_2ARGS, "bif:locate({1},{0},{2s}+1)-1");
add(Ops.STARTS_WITH, "bif:locate({1},{0}) = 1");
add(Ops.ENDS_WITH, "regex({0}, bif:concat({1},'$'))");
add(Ops.STRING_CONTAINS, "bif:locate({1},{0}) > 0");
add(Ops.STARTS_WITH_IC, "bif:locate({1l},{0l}) = 1");
add(Ops.ENDS_WITH_IC, "regex({0}, bif:concat({1},'$'), 'i')");
add(Ops.STRING_CONTAINS_IC, "bif:locate({1l},{0l}) > 0");
add(Ops.CHAR_AT, "bif:substring({0},{1s}+1,1)");
add(Ops.EXISTS, "bif:exists ((select * where {0}))");
add(Ops.COALESCE, "bif:coalesce({0})");
// numeric
add(Ops.MOD, "bif:mod({0},{1})");
add(Ops.MathOps.ABS, "bif:abs(xsd:double({0}))");
add(Ops.MathOps.SQRT, "bif:sqrt({0})");
// date and time
add(Ops.DateTimeOps.SECOND, "bif:second({0})");
add(Ops.DateTimeOps.MILLISECOND, "0");
add(Ops.DateTimeOps.MINUTE, "bif:minute({0})");
add(Ops.DateTimeOps.HOUR, "bif:hour({0})");
add(Ops.DateTimeOps.WEEK, "bif:week({0})");
add(Ops.DateTimeOps.MONTH, "bif:month({0})");
add(Ops.DateTimeOps.YEAR, "bif:year({0})");
add(Ops.DateTimeOps.YEAR_MONTH, "bif:year({0}) * 100 + bif:month({0})");
add(Ops.DateTimeOps.DAY_OF_WEEK, "bif:dayofweek({0})");
add(Ops.DateTimeOps.DAY_OF_MONTH, "bif:dayofmonth({0})");
add(Ops.DateTimeOps.DAY_OF_YEAR, "bif:dayofyear({0})");
}
}