protected TNorm extractTNorm(String line) {
        List<String> token = Op.split(line, ":");
        if (token.size() != 2) {
            throw new RuntimeException("[syntax error] "
                    + "expected property of type (key : value) in line: " + line);
        }
        String name = token.get(1).trim();
        String className = null;
        if ("MIN".equals(name)) {
            className = Minimum.class.getSimpleName();
        } else if ("PROD".equals(name)) {
            className = AlgebraicProduct.class.getSimpleName();
        } else if ("BDIF".equals(name)) {
            className = BoundedDifference.class.getSimpleName();
        } else if ("DPROD".equals(name)) {
            className = DrasticProduct.class.getSimpleName();
        } else if ("EPROD".equals(name)) {
            className = EinsteinProduct.class.getSimpleName();
        } else if ("HPROD".equals(name)) {
            className = HamacherProduct.class.getSimpleName();
        }
        return FactoryManager.instance().tnorm().createInstance(className);
    }