Map<String, Object> getValues( Individual ind, OntModel displayOntModel, OntModel assertionModel, Map<String, Object> baseValues) { if (ind == null) return Collections.emptyMap(); /* Figure out what ValueFactories are specified in the display ontology for this individual. */ Set<ValueFactory> valueFactories = new HashSet<ValueFactory>(); displayOntModel.enterCriticalSection(Model.READ); StmtIterator stmts = ind.listProperties(DisplayVocabulary.REQUIRES_VALUES); try { while (stmts.hasNext()) { Statement stmt = stmts.nextStatement(); RDFNode obj = stmt.getObject(); valueFactories.addAll(getValueFactory(obj, displayOntModel)); } } finally { stmts.close(); displayOntModel.leaveCriticalSection(); } /* Get values from the ValueFactories. */ HashMap<String, Object> values = new HashMap<String, Object>(); values.putAll(baseValues); for (ValueFactory vf : valueFactories) { values.putAll(vf.getValues(assertionModel, values)); } return values; }