Class Translator

  • Direct Known Subclasses:
    AspFolTranslator, ClNLPTranslator, FOLPropTranslator

    public abstract class Translator
    extends java.lang.Object
    Allows translation between different logic languages, sub classes have to implement the translation between complex formulas but this base class provides methods to translate, predicates, Atoms, Associative formulas and Rules. To translate more complex formulas subclasses shall override the translateUsingMap() method. It is recommended to call the super method when overriding to have the correct translate behavior for basic constructs like Atoms, Predicate etc. The sub class also have to implement the createTranslateMap() method. The map maps a source class to a pair of a target class and an implementation which shall be used for translation. Although sub classes shall provide an easy user-interface with different overloads of methods like: toLang1() and toLang2() the translate map is necessary to support nested formulas like a disjunction of conjunction of several disjunction etc. Remark: The implementations used unchecked generic casts. It is important that the subclasses create consistent translation maps, otherwise there might be a ClassCastException which is not thrown by this code although it is caused by the inconsistent translation map. Also see net.sf.tweety.logics.translate.folprop for a short example implementation.
    Author:
    Tim Janus
    • Field Detail

      • LOG

        private static org.slf4j.Logger LOG
        reference to the logback logger instance
      • translateMap

        java.util.Map<java.lang.Class<?>,​Pair<java.lang.Integer,​java.lang.Class<?>>> translateMap
    • Constructor Detail

      • Translator

        public Translator()
    • Method Detail

      • createTranslateMap

        protected abstract java.util.Map<java.lang.Class<?>,​Pair<java.lang.Integer,​java.lang.Class<?>>> createTranslateMap()
      • translatePredicate

        public <C extends Predicate> C translatePredicate​(Predicate source,
                                                          java.lang.Class<C> predicateCls)
                                                   throws LanguageException
        Translates the given source predicate into an instance of the given predicate class and returns the translation.
        Type Parameters:
        C - the type of predicate
        Parameters:
        source - The predicate acting as source for the operation
        predicateCls - The description of the destination Predicate class
        Returns:
        An instance of predicateCls which is syntactically equal to source.
        Throws:
        LanguageException - if an issue with the language occurs.
      • translateAtom

        public Atom translateAtom​(Atom source,
                                  java.lang.Class<?> atomCls)
                           throws LanguageException
        Translates the given source atom into an instance of atomCls and returns the translation.
        Parameters:
        source - The atom acting as source
        atomCls - The description of the destination Atom class
        Returns:
        The translated atom
        Throws:
        LanguageException - if an issue with the language occurs.
      • translateAssociative

        public <A extends AssociativeFormula<? extends SimpleLogicalFormula>> AssociativeFormula<?> translateAssociative​(A source,
                                                                                                                         java.lang.Class<?> assocCls)
        Translates the given AssociativeFormula into another AssociativeFormula thats type is given by the parameter assocCls
        Type Parameters:
        A - the type of associative formulas
        Parameters:
        source - The
        assocCls - the class of the expected associative formula
        Returns:
        an associative formula
      • getTranslateInfo

        protected Pair<java.lang.Integer,​java.lang.Class<?>> getTranslateInfo​(java.lang.Class<?> cls)