Skip to content

Method: visit(OWLDataExactCardinality)

1: package cz.cvut.kbss.jopa.owl2java;
2:
3: import cz.cvut.kbss.jopa.ic.api.IntegrityConstraint;
4: import cz.cvut.kbss.jopa.ic.api.IntegrityConstraintFactory;
5: import cz.cvut.kbss.jopa.ic.impl.IntegrityConstraintFactoryImpl;
6: import java.util.HashSet;
7: import java.util.Set;
8: import org.semanticweb.owlapi.model.OWLClass;
9: import org.semanticweb.owlapi.model.OWLClassExpression;
10: import org.semanticweb.owlapi.model.OWLClassExpressionVisitor;
11: import org.semanticweb.owlapi.model.OWLDataAllValuesFrom;
12: import org.semanticweb.owlapi.model.OWLDataExactCardinality;
13: import org.semanticweb.owlapi.model.OWLDataHasValue;
14: import org.semanticweb.owlapi.model.OWLDataMaxCardinality;
15: import org.semanticweb.owlapi.model.OWLDataMinCardinality;
16: import org.semanticweb.owlapi.model.OWLDataProperty;
17: import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom;
18: import org.semanticweb.owlapi.model.OWLDatatype;
19: import org.semanticweb.owlapi.model.OWLObject;
20: import org.semanticweb.owlapi.model.OWLObjectAllValuesFrom;
21: import org.semanticweb.owlapi.model.OWLObjectComplementOf;
22: import org.semanticweb.owlapi.model.OWLObjectExactCardinality;
23: import org.semanticweb.owlapi.model.OWLObjectHasSelf;
24: import org.semanticweb.owlapi.model.OWLObjectHasValue;
25: import org.semanticweb.owlapi.model.OWLObjectIntersectionOf;
26: import org.semanticweb.owlapi.model.OWLObjectMaxCardinality;
27: import org.semanticweb.owlapi.model.OWLObjectMinCardinality;
28: import org.semanticweb.owlapi.model.OWLObjectOneOf;
29: import org.semanticweb.owlapi.model.OWLObjectProperty;
30: import org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom;
31: import org.semanticweb.owlapi.model.OWLObjectUnionOf;
32: import org.slf4j.Logger;
33: import org.slf4j.LoggerFactory;
34:
35: public class IntegrityConstraintClassParser implements OWLClassExpressionVisitor {
36:
37: private static final Logger log = LoggerFactory.getLogger(IntegrityConstraintClassParser.class);
38:
39: private final Set<IntegrityConstraint> integrityConstraints = new HashSet<>();
40:
41: private OWLClass subjClass;
42:
43: private IntegrityConstraintFactory integrityConstraintFactory = new IntegrityConstraintFactoryImpl();
44:
45: public IntegrityConstraintClassParser(final OWLClass subjClass) {
46: this.subjClass = subjClass;
47: }
48:
49: private static void notSupported(final OWLObject o) {
50: log.info("Ignoring Unsupported Axiom : {}", o);
51: }
52:
53: public Set<IntegrityConstraint> getIntegrityConstraints() {
54: return integrityConstraints;
55: }
56:
57: public void visit(OWLDataMaxCardinality arg0) {
58: try {
59: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
60: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
61: .getProperty());
62:
63: integrityConstraints.add(integrityConstraintFactory
64: .MaxDataParticipationConstraint(subjClass, dp, dt,
65: arg0.getCardinality()));
66: } catch (UnsupportedICException e) {
67: notSupported(arg0);
68: }
69: }
70:
71: public void visit(OWLDataExactCardinality arg0) {
72: try {
73: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
74: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
75: .getProperty());
76:
77: integrityConstraints.add(integrityConstraintFactory.DataParticipationConstraint(
78: subjClass, dp, dt, arg0.getCardinality(),
79: arg0.getCardinality()));
80: } catch (UnsupportedICException e) {
81: notSupported(arg0);
82: }
83: }
84:
85: public void visit(OWLDataMinCardinality arg0) {
86: try {
87: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
88: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
89: .getProperty());
90:
91: integrityConstraints.add(integrityConstraintFactory
92: .MinDataParticipationConstraint(subjClass, dp, dt,
93: arg0.getCardinality()));
94: } catch (UnsupportedICException e) {
95: notSupported(arg0);
96: }
97: }
98:
99: public void visit(OWLDataHasValue arg0) {
100: notSupported(arg0);
101: //IntegrityConstraintParser.ensureDataProperty(arg0.getProperty());
102: //
103: // set.add(IntegrityConstraintFactoryImpl
104: // .datatypeParticipationConstraint(subjClass, arg0
105: // .getProperty().asOWLDataProperty(), f
106: // .getOWLDataOneOf(arg0.getValue()), 1, 1));
107: }
108:
109: public void visit(OWLDataAllValuesFrom arg0) {
110: try {
111: OWLDataProperty op = Utils.ensureDataProperty(arg0.getProperty());
112: OWLDatatype clz = Utils.ensureDatatype(arg0.getFiller());
113:
114: integrityConstraints.add(integrityConstraintFactory.DataPropertyRangeConstraint(
115: subjClass, op, clz));
116: } catch (UnsupportedICException e) {
117: notSupported(arg0);
118: }
119: }
120:
121: public void visit(OWLDataSomeValuesFrom arg0) {
122: try {
123: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
124: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
125: .getProperty());
126:
127: integrityConstraints.add(integrityConstraintFactory
128: .MinDataParticipationConstraint(subjClass, dp, dt, 1));
129: } catch (UnsupportedICException e) {
130: notSupported(arg0);
131: }
132: }
133:
134: public void visit(OWLObjectOneOf arg0) {
135: notSupported(arg0);
136: }
137:
138: public void visit(OWLObjectHasSelf arg0) {
139: notSupported(arg0);
140: }
141:
142: public void visit(OWLObjectMaxCardinality arg0) {
143: try {
144: OWLClass c = Utils.ensureClass(arg0.getFiller());
145: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
146:
147: integrityConstraints.add(integrityConstraintFactory
148: .MaxObjectParticipationConstraint(subjClass, p, c,
149: arg0.getCardinality()));
150: } catch (UnsupportedICException e) {
151: notSupported(arg0);
152: }
153: }
154:
155: public void visit(OWLObjectExactCardinality arg0) {
156: try {
157: OWLClass c = Utils.ensureClass(arg0.getFiller());
158: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
159:
160: integrityConstraints.add(integrityConstraintFactory
161: .ObjectParticipationConstraint(subjClass, p, c,
162: arg0.getCardinality(), arg0.getCardinality()));
163: } catch (UnsupportedICException e) {
164: notSupported(arg0);
165: }
166: }
167:
168: public void visit(OWLObjectMinCardinality arg0) {
169: try {
170: OWLClass c = Utils.ensureClass(arg0.getFiller());
171: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
172:
173: integrityConstraints.add(integrityConstraintFactory
174: .MinObjectParticipationConstraint(subjClass, p, c,
175: arg0.getCardinality()));
176: } catch (UnsupportedICException e) {
177: notSupported(arg0);
178: }
179: }
180:
181: public void visit(OWLObjectHasValue arg0) {
182: notSupported(arg0);
183: }
184:
185: public void visit(OWLObjectAllValuesFrom arg0) {
186: try {
187: OWLObjectProperty op = Utils.ensureObjectProperty(arg0.getProperty());
188: OWLClass clz = Utils.ensureClass(arg0.getFiller());
189:
190: integrityConstraints.add(integrityConstraintFactory
191: .ObjectPropertyRangeConstraint(subjClass, op, clz));
192: } catch (UnsupportedICException e) {
193: notSupported(arg0);
194: }
195: }
196:
197: public void visit(OWLObjectSomeValuesFrom arg0) {
198: try {
199: OWLClass c = Utils.ensureClass(arg0.getFiller());
200: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
201:
202: integrityConstraints.add(integrityConstraintFactory
203: .MinObjectParticipationConstraint(subjClass, p, c, 1));
204: } catch (UnsupportedICException e) {
205: notSupported(arg0);
206: }
207: }
208:
209: public void visit(OWLObjectComplementOf arg0) {
210: notSupported(arg0);
211: }
212:
213: public void visit(OWLObjectUnionOf arg0) {
214: notSupported(arg0);
215: }
216:
217: public void visit(OWLObjectIntersectionOf arg0) {
218: for (final OWLClassExpression e : arg0.getOperands()) {
219: e.accept(this);
220: }
221: }
222:
223: public void visit(OWLClass arg0) {
224: integrityConstraints.add(integrityConstraintFactory.SubClassConstraint(subjClass, arg0));
225: }
226: }