public void visit(OWLDataValueRestriction owlDataValueRestriction) {
   try {
     DataPropertyPointer p = translate(owlDataValueRestriction.getProperty());
     OWLConstant val = owlDataValueRestriction.getValue();
     val.accept(this);
     lastClassPointer = faCTPlusPlus.getDataValue(p, getLastDataValuePointer());
   } catch (Exception e) {
     throw new FaCTPlusPlusRuntimeException(e);
   }
 }
  public void visit(OWLDataOneOf node) {
    try {
      lastDataTypeExpressionPointer = owlDataRange2DataTypeExpressionPointerMap.get(node);
      if (lastDataTypeExpressionPointer == null) {

        List<DataValuePointer> pointers = new ArrayList<DataValuePointer>();
        for (OWLConstant con : node.getValues()) {
          con.accept(this);
          pointers.add(getLastDataValuePointer());
        }
        faCTPlusPlus.initArgList();
        for (DataValuePointer pointer : pointers) {
          faCTPlusPlus.addArg(pointer);
        }
        faCTPlusPlus.closeArgList();
        lastDataTypeExpressionPointer = faCTPlusPlus.getDataEnumeration();
        owlDataRange2DataTypeExpressionPointerMap.put(node, lastDataTypeExpressionPointer);
        dataTypeExpressionPointerMap.put(lastDataTypeExpressionPointer, node);
      }
    } catch (Exception e) {
      throw new FaCTPlusPlusRuntimeException(e);
    }
  }
 public DataValuePointer translate(OWLConstant con) throws OWLException {
   con.accept(this);
   return getLastDataValuePointer();
 }