package org.obda.query.domain;

/**
 * This class defines a type of {@link Term} in which it expresses a relation
 * to one or more other variables in terms of which it may be expressed or on
 * which its value depends.
 */
public interface Function extends Term {

}

@@ -25,16 +25,40 @@
 omain;%0A%0A
+import java.util.List;%0A%0A
 /**%0A * T
@@ -114,179 +114,922 @@
  it 
-expresses a relation%0A * to one or more other variables in terms of which it may be expressed or on%0A * which its value depends.%0A */%0Apublic interface Function extends Term %7B%0A
+denotes a mapping of%0A * one or more elements in a set (called the domain of the function) into a%0A * unique element of another set (the range of the function).%0A * %3Cp%3E%0A * A function expression is a function symbol followed by its arguments.%0A * The arguments are elements from the domain of the function; the number of%0A * arguments is equal to the %7B@code arity%7D of the function. The arguments are%0A * enclosed in parentheses and separated by commas, e.g.,%0A * %3Cp%3E%0A * %3Ccode%3E%0A * f(X,Y) %3Cbr /%3E%0A * father(david) %3Cbr /%3E%0A * price(apple) %3Cbr /%3E%0A * %3C/code%3E%0A * %3Cp%3E%0A * are all well-formed function expressions.%0A */%0Apublic interface Function extends Term %7B%0A%0A%09/**%0A%09 * Get a list of terms (or arguments) that are contained in the function%0A%09 * symbol.%0A%09 *%0A%09 * @return a list of terms.%0A%09 */%0A%09public List%3CTerm%3E getTerms();%0A%0A%09/**%0A%09 * Get the number of terms (or arguments) in the function symbol.%0A%09 * @return%0A%09 */%0A%09public int getArity();
 %0A%7D%0A

Add new abstract methods: getTerms() and getArity(). Also, there is a bit modification to the class description.