private List<OntResource> listUnionMembers(OntProperty p, OntResource domain) { List<OntResource> list = new ArrayList<OntResource>(); Resource union = domain.getPropertyResourceValue(OWL.unionOf); if (union != null && union.canAs(RDFList.class)) { RDFList rdfList = union.as(RDFList.class); Iterator<RDFNode> sequence = rdfList.iterator(); while (sequence.hasNext()) { list.add(sequence.next().as(OntResource.class)); } } return list; }
private Field createListField(Frame frame, OntProperty p, OntResource range) { Resource intersection = range.getPropertyResourceValue(OWL.intersectionOf); if (intersection == null) return null; if (intersection.canAs(RDFList.class)) { List<RDFNode> intersectionList = intersection.as(RDFList.class).asJavaList(); for (RDFNode node : intersectionList) { if (node.canAs(OntClass.class)) { OntClass intersectionMember = node.as(OntClass.class); if (RDF.first.equals(intersectionMember.getPropertyResourceValue(OWL.onProperty))) { // The intersectionMember has an owl:onProperty property whose value is rdf:first Resource elementRdfType = intersectionMember.getPropertyResourceValue(OWL.allValuesFrom); if (elementRdfType != null) { String elementTypeURI = elementRdfType.getURI(); if (elementTypeURI != null) { RdfType elementType = manager.getTypeByURI(elementTypeURI); if (elementType != null) { ListType listType = manager.getListTypeByElementUri(elementTypeURI); if (listType == null) { listType = new ListType(manager, intersectionMember, elementType); manager.add(listType); } return new Field(frame, p, listType); } } } } } } } return null; }