Skip to content

Method: getFiller()

1: package cz.cvut.kbss.jopa.owl2java;
2:
3: import cz.cvut.kbss.jopa.ic.api.DataParticipationConstraint;
4: import cz.cvut.kbss.jopa.ic.api.DataRangeConstraint;
5: import java.util.HashSet;
6: import java.util.Set;
7: import org.semanticweb.owlapi.apibinding.OWLManager;
8: import org.semanticweb.owlapi.model.OWLClass;
9: import org.semanticweb.owlapi.model.OWLDataProperty;
10: import org.semanticweb.owlapi.model.OWLDatatype;
11: import org.semanticweb.owlapi.model.OWLOntology;
12:
13: public class ClassDataPropertyComputer {
14:
15: private Set<DataParticipationConstraint> constraints = new HashSet<>();
16: private OWLDatatype filler;
17: private Card card;
18:
19: public ClassDataPropertyComputer(
20: final OWLClass clazz,
21: final OWLDataProperty prop,
22: final IntegrityConstraintSet set,
23: final OWLOntology ontology
24: ) {
25: set.getClassDataIntegrityConstraints(clazz, prop).forEach(integrityConstraint -> {
26: if (integrityConstraint instanceof DataParticipationConstraint) {
27: this.constraints.add((DataParticipationConstraint) integrityConstraint);
28: } else if (integrityConstraint instanceof DataRangeConstraint) {
29: this.filler = ((DataRangeConstraint) integrityConstraint).getRange();
30: }
31: });
32:
33: if (filler == null) {
34: filler = ontology.getOWLOntologyManager().getOWLDataFactory().getRDFPlainLiteral();
35: }
36:
37: if (constraints.isEmpty()) {
38: card = Card.NO;
39: } else {
40: card = Card.MULTIPLE;
41: for (final DataParticipationConstraint opc : getParticipationConstraints()) {
42: final OWLDatatype dt2 = opc.getObject();
43: if (getFiller().equals(dt2)
44: || dt2.equals(OWLManager.getOWLDataFactory()
45: .getTopDatatype())) {
46: if (opc.getMax() == 1) {
47: card = Card.ONE;
48: return;
49: }
50: }
51: }
52: }
53: }
54:
55: public Card getCard() {
56: return card;
57: }
58:
59: public OWLDatatype getFiller() {
60: return filler;
61: }
62:
63: public Set<DataParticipationConstraint> getParticipationConstraints() {
64: return constraints;
65: }
66:
67: }