package exp.org.aksw.sparqlify.core.datatype; //class Registry { // //} // //class Ops { // // /* // * Arithmetic // */ // // // Integer // // public static Integer add(Integer a, Integer b) { // return a + b; // } // // public static Integer subtract(Integer a, Integer b) { // return a - b; // } // // public static Integer multiply(Integer a, Integer b) { // return a * b; // } // // public static Integer divide(Integer a, Integer b) { // return a / b; // } // // // Double // // public static Double add(Double a, Double b) { // return a + b; // } // // public static Double subtract(Double a, Double b) { // return a - b; // } // // public static Double multiply(Double a, Double b) { // return a * b; // } // // public static Double divide(Double a, Double b) { // return a / b; // } // // // /* // * In-/Equality // */ // // // public static Boolean lessThan(Integer a, Integer b) { // return a < b; // } // // public static Boolean lessThanOrEquals(Integer a, Integer b) { // return a <= b; // } // // public static Boolean equals(Integer a, Integer b) { // return a == b; // } // // public static Boolean greaterThanOrEquals(Integer a, Integer b) { // return a >= b; // } // // public static Boolean greaterThan(Integer a, Integer b) { // return a > b; // } // // // public static Boolean lessThan(Double a, Double b) { // return a < b; // } // // public static Boolean lessThanOrEquals(Double a, Double b) { // return a <= b; // } // // public static Boolean equals(Double a, Double b) { // return a == b; // } // // public static Boolean greaterThanOrEquals(Double a, Double b) { // return a >= b; // } // // public static Boolean greaterThan(Double a, Double b) { // return a > b; // } // // // public static Boolean lessThan(String a, String b) { // return a.compareTo(b) < 0; // } // // public static Boolean lessThanOrEquals(String a, String b) { // return a.compareTo(b) <= 0; // } // // public static Boolean equals(String a, String b) { // return a.equals(b); // } // // public static Boolean greaterThanOrEquals(String a, String b) { // return a.compareTo(b) >= 0; // } // // public static Boolean greaterThan(String a, String b) { // return a.compareTo(b) > 0; // } // // // public static Boolean logicalAnd(Boolean a, Boolean b) { // return a && b; // } // // public static Boolean logicalOr(Boolean a, Boolean b) { // return a || b; // } // // public static Boolean logicalNot(Boolean a) { // return !a; // } // // // /* // public static String myTestFunc(String str, Integer i) { // return "XXX " + str + ", " + i + " XXX"; // } // */ // // // public static String myTestFunc(String str, Double i) { // return "xxx " + i + "xxx"; // } // // public static Boolean equalsIgnoreCase(String a, String b) { // return a.equalsIgnoreCase(b); // } //} // // // // ///* //interface XMethod { // //} //*/ // //public class DatatypeSystemTests { // // private static final Logger logger = LoggerFactory.getLogger(DatatypeSystemTests.class); // // // @Test // public void test() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, IOException, RecognitionException { // // Object tmp = SqlExprOps.a; // // FunctionDeclaration decl; // // DatatypeSystemCustom ds = SparqlifyUtils.createDefaultDatatypeSystem(); // // { // Method m = DefaultCoercions.class.getMethod("toDouble", Integer.class); // XMethod x = XMethodImpl.createFromMethod("toDouble", ds, null, m); // //ds.register(x); // ds.registerCoercion(x); // } // // //// S_Constant a = S_Constant.create("http://ex.org/", ds); //// System.out.println(a); //// //// S_Constant b = S_Constant.create(1, ds); //// System.out.println(b); //// //// S_Constant d = S_Constant.create(3.14, ds); //// System.out.println(d); // // // // // // // //S_Concat c = S_Concat.create(a, b); // //System.out.println(c); // // //S_UserFunc c = S_UserFunc.create("http://ex.org/fn/myTestFunc", a, b); // //System.out.println(c); // // // // Define a random custom function // { // Method m = Ops.class.getMethod("myTestFunc", String.class, Double.class); // XMethod x = XMethodImpl.createFromMethod("myTestFunc", ds, null, m); // //SparqlFunction fn = ds.createSparqlFunction("http://ex.org/fn/myTestFunc"); // ds.registerSqlFunction("http://ex.org/fn/myTestFunc", x); // // } // // // { // //XMethodImpl.createFromMethod("http://example.org/intersects", ds, object, method) // MethodSignature<TypeToken> signature = MethodSignature.create(TypeToken.Boolean, Arrays.asList(TypeToken.Int, TypeToken.Int), null); // // XMethod x = XMethodImpl.create(ds, "ST_INTERSECTS", signature); // ds.registerSqlFunction("http://ex.org/fn/intersects", x); // //ds.registerSqlFunction(x); // } // // // // { // SqlExprEvaluator evaluator = new SqlExprEvaluator_LogicalAnd(); // ds.createSparqlFunction("&&", evaluator); // } // // { // SqlExprEvaluator evaluator = new SqlExprEvaluator_LogicalOr(); // ds.createSparqlFunction("||", evaluator); // } // // { // SqlExprEvaluator evaluator = new SqlExprEvaluator_LogicalNot(); // ds.createSparqlFunction("!", evaluator); // } // // // { // //MethodSignature<TypeToken> signature = MethodSignature.create(TypeToken.Boolean, Arrays.asList(TypeToken.String, TypeToken.String)); // // //XMethod x = XMethodImpl.create(ds, "equalsIgnoreCase", signature); // Method m = Ops.class.getMethod("equalsIgnoreCase", String.class, String.class); // XMethod x = XMethodImpl.createFromMethod("EQUALS_IGNORE_CASE", ds, null, m); // ds.registerSqlFunction("http://ex.org/fn/equalsIgnoreCase", x); // } // // // /* // { // Method m = Ops.class.getMethod("myTestFunc", String.class, Double.class); // XMethod x = XMethodImpl.createFromMethod("myTestFunc", ds, null, m); // ds.register(x); // }*/ // // // ExprEvaluatorSql evaluater = new ExprEvaluatorSql(ds, null); //sqlFunctionRegistry); // //ds. // //SqlExpr result = evaluater.eval(c, null); // //System.out.println("Result: " + result); // // // //DatatypeSystem system = TestUtils.createDefaultDatatypeSystem(); // //SqlDatatype integer = system.getByName("integer"); // /* // SqlDatatype xfloat = system.getByName("float"); // // Set<SqlDatatype> xxx = system.supremumDatatypes(integer, xfloat); // System.out.println(xxx); //*/ // // FunctionRegistrySql sqlRegistry = new FunctionRegistrySql(ds); // // ConfigParser parser = new ConfigParser(); // // { // /** // * Actually it is like that: // * We have an abstract sparql function, which can be overloaded by several SQL functions. // * E.g. the SPARQL function ogc:intersects can be implemented by ST_Intersects for geometries or for geographies. // * // */ // // Config config = parser.parse("PREFIX fn:<http://ex.org/fn/> DECLARE FUNCTION boolean ex:intersects(integer ?a, integer ?b) AS ST_INTERSECTS(?a, ?b, 1000 * ?a)", logger); // FunctionDeclarationTemplate fnDecl = config.getFunctionDeclarations().get(0); // sqlRegistry.add(fnDecl); // } // { // /* // Config config = parser.parse("PREFIX ex:<http://ex.org/> DECLARE FUNCTION boolean ex:intersects(geometry ?a, geometry ?b) AS ST_INTERSECTS(?a, ?b, 1000 * ?a)", logger); // FunctionDeclaration decl = config.getFunctionDeclarations().get(0); // sqlRegistry.add(decl); // */ // } // // ExprTransformerMap exprTransformer = new ExprTransformerMap(); // // ExprEvaluator evaluatorSql = new ExprEvaluatorPartial(FunctionRegistry.get(), exprTransformer); // //Expr expr = ExprUtils.parse("<http://ex.org/intersects>(1 + 1, ?a)"); // // // Expr expr = ExprUtils.parse("<http://ex.org/fn/equalsIgnoreCase>('a', 'b') && <http://ex.org/fn/intersects>(1 + 1, ?a)"); // // Expr evaledExpr = evaluatorSql.eval(expr, null); // // // SqlTranslator sqlTranslator = new SqlTranslatorImpl(ds); // // Map<Var, Expr> binding = new HashMap<Var, Expr>(); // // Map<String, TypeToken> typeMap = new HashMap<String, TypeToken>(); // typeMap.put("a", TypeToken.Int); // // // System.out.println(evaledExpr); // SqlExpr sqlExpr = sqlTranslator.translate(evaledExpr, binding, typeMap); // // System.out.println("Final: " + sqlExpr); // // //S_Method method = (S_Method)sqlExpr; // //System.out.println(method.getMethod().getSerializer().serialize(Arrays.asList("test", "b"))); // } //}