@Nonnull
private OWLAxiom parseAxiomWithDataPropertyStart() {
OWLDataPropertyExpression prop = parseDataProperty();
String kw = consumeToken();
if (SOME.matches(kw)) {
OWLDataRange dataRange = parseDataIntersectionOf();
return parseClassAxiomRemainder(dataFactory
.getOWLDataSomeValuesFrom(prop, dataRange));
} else if (ONLY.matches(kw)) {
OWLDataRange dataRange = parseDataIntersectionOf();
return parseClassAxiomRemainder(dataFactory
.getOWLDataAllValuesFrom(prop, dataRange));
} else if (MIN.matches(kw)) {
int cardi = parseInteger();
OWLDataRange dataRange = parseDataIntersectionOf();
return parseClassAxiomRemainder(dataFactory
.getOWLDataMinCardinality(cardi, prop, dataRange));
} else if (MAX.matches(kw)) {
int cardi = parseInteger();
OWLDataRange dataRange = parseDataIntersectionOf();
return parseClassAxiomRemainder(dataFactory
.getOWLDataMaxCardinality(cardi, prop, dataRange));
} else if (EXACTLY.matches(kw)) {
int cardi = parseInteger();
OWLDataRange dataRange = parseDataIntersectionOf();
return parseClassAxiomRemainder(dataFactory
.getOWLDataExactCardinality(cardi, prop, dataRange));
} else if (SUB_PROPERTY_OF.matches(kw)) {
OWLDataPropertyExpression superProperty = parseDataPropertyExpression();
return dataFactory
.getOWLSubDataPropertyOfAxiom(prop, superProperty);
} else if (EQUIVALENT_TO.matches(kw)) {
OWLDataPropertyExpression equivProp = parseDataPropertyExpression();
return dataFactory.getOWLEquivalentDataPropertiesAxiom(prop,
equivProp);
} else if (DISJOINT_WITH.matches(kw)) {
OWLDataPropertyExpression disjProp = parseDataPropertyExpression();
return dataFactory
.getOWLDisjointDataPropertiesAxiom(prop, disjProp);
} else if (DOMAIN.matches(kw)) {
OWLClassExpression domain = parseClassExpression();
return dataFactory.getOWLDataPropertyDomainAxiom(prop, domain);
} else if (RANGE.matches(kw)) {
OWLDataRange range = parseDataRange();
return dataFactory.getOWLDataPropertyRangeAxiom(prop, range);
} else {
throw new ExceptionBuilder().withKeyword(SOME, ONLY, MIN, MAX,
EXACTLY, SUB_PROPERTY_OF, EQUIVALENT_TO, DISJOINT_WITH,
DOMAIN, RANGE).build();