package org.aksw.sparqlify.type_system; import java.util.Collection; import java.util.List; import java.util.Map; public interface FunctionModel<T> { //public void registerFunction(String id, String name, MethodSignature<T> signature) { MethodEntry<T> lookupById(String fnId); Collection<CandidateMethod<T>> lookup(Collection<MethodEntry<T>> candidates, List<T> argTypes); Collection<CandidateMethod<T>> lookupByName(String functionName, List<T> argTypes); Collection<String> getIdsByName(String name); String getNameById(String id); Collection<MethodEntry<T>> getMethodEntries(); MethodEntry<T> registerFunction(MethodDeclaration<T> declaration); void registerCoercion(MethodDeclaration<T> declaration); // TODO Potentially deprecate the following methods - the MethodDeclaration class reduces duplication and may thus be better suited // But let's first collect some experience and see how this turns out @Deprecated MethodEntry<T> registerFunction(String id, String name, MethodSignature<T> signature); @Deprecated void registerCoercion(String id, String name, MethodSignature<T> signature); Map<String, String> getInverses(); //Map<String, Map<String, String>> getTags(); }