public void visit(OWLDataRangeRestriction node) { try { lastDataTypeExpressionPointer = owlDataRange2DataTypeExpressionPointerMap.get(node); if (lastDataTypeExpressionPointer == null) { lastDataTypeExpressionPointer = null; lastDataTypePointer = null; node.getDataRange().accept(this); DataTypeExpressionPointer dt = getLastDataTypeExpressionPointer(); for (OWLDataRangeFacetRestriction restriction : node.getFacetRestrictions()) { restriction.getFacetValue().accept(this); DataValuePointer dv = getLastDataValuePointer(); DataTypeFacet facet = null; if (restriction.getFacet().equals(OWLRestrictedDataRangeFacetVocabulary.MIN_INCLUSIVE)) { facet = faCTPlusPlus.getMinInclusiveFacet(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.MAX_INCLUSIVE)) { facet = faCTPlusPlus.getMaxInclusiveFacet(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.MIN_EXCLUSIVE)) { facet = faCTPlusPlus.getMinExclusiveFacet(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.MAX_EXCLUSIVE)) { facet = faCTPlusPlus.getMaxExclusiveFacet(dv); } else if (restriction.getFacet().equals(OWLRestrictedDataRangeFacetVocabulary.LENGTH)) { facet = faCTPlusPlus.getLength(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.MIN_LENGTH)) { facet = faCTPlusPlus.getMinLength(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.MAX_LENGTH)) { facet = faCTPlusPlus.getMaxLength(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.FRACTION_DIGITS)) { facet = faCTPlusPlus.getFractionDigitsFacet(dv); } else if (restriction.getFacet().equals(OWLRestrictedDataRangeFacetVocabulary.PATTERN)) { facet = faCTPlusPlus.getPattern(dv); } else if (restriction .getFacet() .equals(OWLRestrictedDataRangeFacetVocabulary.TOTAL_DIGITS)) { facet = faCTPlusPlus.getTotalDigitsFacet(dv); } else { throw new FaCTPlusPlusReasonerException( "Unsupported data type facet: " + restriction.getFacet()); } dt = lastDataTypeExpressionPointer = faCTPlusPlus.getRestrictedDataType(dt, facet); } owlDataRange2DataTypeExpressionPointerMap.put(node, lastDataTypeExpressionPointer); dataTypeExpressionPointerMap.put(lastDataTypeExpressionPointer, node); } } catch (Exception e) { throw new FaCTPlusPlusRuntimeException(e); } }