public static synchronized boolean isSingleValued( OntClass cls, OntProperty prop, String rngString) { if (prop.isFunctionalProperty()) { return true; } if (cls != null) { ExtendedIterator<OntClass> eitr = cls.listSuperClasses(false); while (eitr.hasNext()) { OntClass supercls = eitr.next(); if (supercls.isRestriction()) { Restriction rstrct = supercls.asRestriction(); if (rstrct.isMaxCardinalityRestriction()) { MaxCardinalityRestriction mxcr = rstrct.asMaxCardinalityRestriction(); if (mxcr.getOnProperty().equals(prop) && mxcr.getMaxCardinality() == 1) { return true; } } else if (rstrct.isCardinalityRestriction()) { if (rstrct.isCardinalityRestriction()) { CardinalityRestriction cr = rstrct.asCardinalityRestriction(); if (cr.getOnProperty().equals(prop) && cr.getCardinality() == 1) { return true; } } } else { if (rstrct.hasProperty(OWL2.maxQualifiedCardinality)) { if (rstrct.getOnProperty().equals(prop) && rstrct.getProperty(OWL2.maxQualifiedCardinality).getInt() == 1) { // check class if (rstrct.getProperty(OWL2.onClass).getResource().toString().equals(rngString)) { return true; } } } else if (rstrct.hasProperty(OWL2.qualifiedCardinality)) { if (rstrct.getOnProperty().equals(prop) && rstrct.getProperty(OWL2.qualifiedCardinality).getInt() == 1) { // check class if (rstrct.getProperty(OWL2.onClass).getResource().toString().equals(rngString)) { return true; } } } // StmtIterator siter = rstrct.listProperties(); // while (siter.hasNext()) { // System.out.println(siter.nextStatement().toString()); // } } } } } return false; }