Skip to contentMethod: visit(OWLObjectHasValue)
1: /*
2: * JOPA
3: * Copyright (C) 2024 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jopa.owl2java;
19:
20: import cz.cvut.kbss.jopa.ic.api.IntegrityConstraint;
21: import cz.cvut.kbss.jopa.ic.api.IntegrityConstraintFactory;
22: import cz.cvut.kbss.jopa.ic.impl.IntegrityConstraintFactoryImpl;
23: import cz.cvut.kbss.jopa.owl2java.exception.UnsupportedICException;
24: import org.semanticweb.owlapi.model.*;
25: import org.slf4j.Logger;
26: import org.slf4j.LoggerFactory;
27:
28: import java.util.HashSet;
29: import java.util.Set;
30:
31: public class IntegrityConstraintClassParser implements OWLClassExpressionVisitor {
32:
33: private static final Logger LOG = LoggerFactory.getLogger(IntegrityConstraintClassParser.class);
34:
35: private final Set<IntegrityConstraint> integrityConstraints = new HashSet<>();
36:
37: private final OWLClass subjClass;
38:
39: private final IntegrityConstraintFactory integrityConstraintFactory = new IntegrityConstraintFactoryImpl();
40:
41: public IntegrityConstraintClassParser(final OWLClass subjClass) {
42: this.subjClass = subjClass;
43: }
44:
45: private static void notSupported(final OWLObject o) {
46: LOG.info("Ignoring Unsupported Axiom : {}", o);
47: }
48:
49: public Set<IntegrityConstraint> getIntegrityConstraints() {
50: return integrityConstraints;
51: }
52:
53: @Override
54: public void visit(OWLDataMaxCardinality arg0) {
55: try {
56: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
57: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
58: .getProperty());
59:
60: integrityConstraints.add(integrityConstraintFactory
61: .MaxDataParticipationConstraint(subjClass, dp, dt,
62: arg0.getCardinality()));
63: } catch (UnsupportedICException e) {
64: notSupported(arg0);
65: }
66: }
67:
68: @Override
69: public void visit(OWLDataExactCardinality arg0) {
70: try {
71: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
72: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
73: .getProperty());
74:
75: integrityConstraints.add(integrityConstraintFactory.DataParticipationConstraint(
76: subjClass, dp, dt, arg0.getCardinality(),
77: arg0.getCardinality()));
78: } catch (UnsupportedICException e) {
79: notSupported(arg0);
80: }
81: }
82:
83: @Override
84: public void visit(OWLDataMinCardinality arg0) {
85: try {
86: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
87: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
88: .getProperty());
89:
90: integrityConstraints.add(integrityConstraintFactory
91: .MinDataParticipationConstraint(subjClass, dp, dt,
92: arg0.getCardinality()));
93: } catch (UnsupportedICException e) {
94: notSupported(arg0);
95: }
96: }
97:
98: @Override
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: @Override
110: public void visit(OWLDataAllValuesFrom arg0) {
111: try {
112: OWLDataProperty op = Utils.ensureDataProperty(arg0.getProperty());
113: OWLDatatype clz = Utils.ensureDatatype(arg0.getFiller());
114:
115: integrityConstraints.add(integrityConstraintFactory.DataPropertyRangeConstraint(
116: subjClass, op, clz));
117: } catch (UnsupportedICException e) {
118: notSupported(arg0);
119: }
120: }
121:
122: @Override
123: public void visit(OWLDataSomeValuesFrom arg0) {
124: try {
125: final OWLDatatype dt = Utils.ensureDatatype(arg0.getFiller());
126: final OWLDataProperty dp = Utils.ensureDataProperty(arg0
127: .getProperty());
128:
129: integrityConstraints.add(integrityConstraintFactory
130: .MinDataParticipationConstraint(subjClass, dp, dt, 1));
131: } catch (UnsupportedICException e) {
132: notSupported(arg0);
133: }
134: }
135:
136: @Override
137: public void visit(OWLObjectOneOf arg0) {
138: notSupported(arg0);
139: }
140:
141: @Override
142: public void visit(OWLObjectHasSelf arg0) {
143: notSupported(arg0);
144: }
145:
146: @Override
147: public void visit(OWLObjectMaxCardinality arg0) {
148: try {
149: OWLClass c = Utils.ensureClass(arg0.getFiller());
150: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
151:
152: integrityConstraints.add(integrityConstraintFactory
153: .MaxObjectParticipationConstraint(subjClass, p, c,
154: arg0.getCardinality()));
155: } catch (UnsupportedICException e) {
156: notSupported(arg0);
157: }
158: }
159:
160: @Override
161: public void visit(OWLObjectExactCardinality arg0) {
162: try {
163: OWLClass c = Utils.ensureClass(arg0.getFiller());
164: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
165:
166: integrityConstraints.add(integrityConstraintFactory
167: .ObjectParticipationConstraint(subjClass, p, c,
168: arg0.getCardinality(), arg0.getCardinality()));
169: } catch (UnsupportedICException e) {
170: notSupported(arg0);
171: }
172: }
173:
174: @Override
175: public void visit(OWLObjectMinCardinality arg0) {
176: try {
177: OWLClass c = Utils.ensureClass(arg0.getFiller());
178: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
179:
180: integrityConstraints.add(integrityConstraintFactory
181: .MinObjectParticipationConstraint(subjClass, p, c,
182: arg0.getCardinality()));
183: } catch (UnsupportedICException e) {
184: notSupported(arg0);
185: }
186: }
187:
188: @Override
189: public void visit(OWLObjectHasValue arg0) {
190: notSupported(arg0);
191: }
192:
193: @Override
194: public void visit(OWLObjectAllValuesFrom arg0) {
195: try {
196: OWLObjectProperty op = Utils.ensureObjectProperty(arg0.getProperty());
197: OWLClass clz = Utils.ensureClass(arg0.getFiller());
198:
199: integrityConstraints.add(integrityConstraintFactory
200: .ObjectPropertyRangeConstraint(subjClass, op, clz));
201: } catch (UnsupportedICException e) {
202: notSupported(arg0);
203: }
204: }
205:
206: @Override
207: public void visit(OWLObjectSomeValuesFrom arg0) {
208: try {
209: OWLClass c = Utils.ensureClass(arg0.getFiller());
210: OWLObjectProperty p = Utils.ensureObjectProperty(arg0.getProperty());
211:
212: integrityConstraints.add(integrityConstraintFactory
213: .MinObjectParticipationConstraint(subjClass, p, c, 1));
214: } catch (UnsupportedICException e) {
215: notSupported(arg0);
216: }
217: }
218:
219: @Override
220: public void visit(OWLObjectComplementOf arg0) {
221: notSupported(arg0);
222: }
223:
224: @Override
225: public void visit(OWLObjectUnionOf arg0) {
226: notSupported(arg0);
227: }
228:
229: @Override
230: public void visit(OWLObjectIntersectionOf arg0) {
231: arg0.operands().forEach(o -> o.accept(this));
232: }
233:
234: @Override
235: public void visit(OWLClass arg0) {
236: integrityConstraints.add(integrityConstraintFactory.SubClassConstraint(subjClass, arg0));
237: }
238: }