Skip to content

Package: IntegrityConstraintSet$1

IntegrityConstraintSet$1

nameinstructionbranchcomplexitylinemethod
lambda$visit$0(OWLClass)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
visit(AtomicSubClassConstraint)
M: 0 C: 14
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
visit(DataDomainConstraint)
M: 10 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
visit(DataParticipationConstraint)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
visit(DataRangeConstraint)
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
visit(ObjectDomainConstraint)
M: 10 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
visit(ObjectParticipationConstraint)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
visit(ObjectRangeConstraint)
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
{...}
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2020 Czech Technical University in Prague
3: *
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: *
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.owl2java;
16:
17: import cz.cvut.kbss.jopa.ic.api.*;
18: import org.semanticweb.owlapi.model.OWLClass;
19: import org.semanticweb.owlapi.model.OWLDataProperty;
20: import org.semanticweb.owlapi.model.OWLObjectProperty;
21:
22: import java.util.*;
23:
24: public class IntegrityConstraintSet {
25: private final Map<OWLClass, List<IntegrityConstraint>> cConstraints = new HashMap<>();
26: private final Map<OWLClass, Map<OWLObjectProperty, Collection<IntegrityConstraint>>> opConstraints = new HashMap<>();
27: private final Map<OWLClass, Map<OWLDataProperty, Collection<IntegrityConstraint>>> dpConstraints = new HashMap<>();
28:
29: private static <K, V> void addToMap(final K key, final V value, final Map<K, Collection<V>> map) {
30: if (!map.containsKey(key)) {
31: map.put(key, new HashSet<>());
32: }
33: map.get(key).add(value);
34: }
35:
36: public void addIntegrityConstraint(final IntegrityConstraint ic) {
37: ic.accept(new IntegrityConstraintVisitor() {
38: @Override
39: public void visit(AtomicSubClassConstraint cpc) {
40: List<IntegrityConstraint> setC =
41: cConstraints.computeIfAbsent(cpc.getSubClass(), k -> new ArrayList<>());
42: setC.add(cpc);
43: }
44:
45: @Override
46: public void visit(DataParticipationConstraint cpc) {
47: addToClassDataIntegrityConstraintSet(cpc.getSubject(), cpc.getPredicate(), cpc);
48: }
49:
50: @Override
51: public void visit(ObjectParticipationConstraint cpc) {
52: addToClassObjectIntegrityConstraintSet(cpc.getSubject(), cpc.getPredicate(), cpc);
53: }
54:
55: @Override
56: public void visit(ObjectDomainConstraint cpc) {
57: addToClassObjectIntegrityConstraintSet(cpc.getDomain(), cpc.getProperty(), cpc);
58: }
59:
60: @Override
61: public void visit(ObjectRangeConstraint cpc) {
62: addToClassObjectIntegrityConstraintSet(cpc.getOWLClass(), cpc.getProperty(), cpc);
63: }
64:
65: @Override
66: public void visit(DataDomainConstraint cpc) {
67: addToClassDataIntegrityConstraintSet(cpc.getDomain(), cpc.getProperty(), cpc);
68: }
69:
70: @Override
71: public void visit(DataRangeConstraint cpc) {
72: addToClassDataIntegrityConstraintSet(cpc.getOWLClass(), cpc.getProperty(), cpc);
73: }
74: });
75: }
76:
77: private Map<OWLObjectProperty, Collection<IntegrityConstraint>> addToClassObjectIntegrityConstraintSet(
78: final OWLClass subjClass, final OWLObjectProperty p, final IntegrityConstraint ic) {
79: Map<OWLObjectProperty, Collection<IntegrityConstraint>> map = opConstraints
80: .computeIfAbsent(subjClass, k -> new HashMap<>());
81: addToMap(p, ic, map);
82: return map;
83: }
84:
85: private Map<OWLDataProperty, Collection<IntegrityConstraint>> addToClassDataIntegrityConstraintSet(
86: final OWLClass subjClass, final OWLDataProperty p, final IntegrityConstraint ic) {
87: Map<OWLDataProperty, Collection<IntegrityConstraint>> map = dpConstraints
88: .computeIfAbsent(subjClass, k -> new HashMap<>());
89: addToMap(p, ic, map);
90: return map;
91: }
92:
93: public List<IntegrityConstraint> getClassIntegrityConstraints(final OWLClass cls) {
94: return cConstraints.getOrDefault(cls, Collections.emptyList());
95: }
96:
97: public Collection<IntegrityConstraint> getClassObjectIntegrityConstraints(
98: final OWLClass clazz,
99: final OWLObjectProperty prop) {
100:
101: final Map<OWLObjectProperty, Collection<IntegrityConstraint>> constraints = opConstraints
102: .get(clazz);
103:
104: if (constraints != null && constraints.containsKey(prop)) {
105: return constraints.get(prop);
106: } else {
107: return Collections.emptyList();
108: }
109: }
110:
111: public Collection<IntegrityConstraint> getClassDataIntegrityConstraints(
112: final OWLClass clazz,
113: final OWLDataProperty prop) {
114:
115: final Map<OWLDataProperty, Collection<IntegrityConstraint>> constraints = dpConstraints
116: .get(clazz);
117:
118: if (constraints != null && constraints.containsKey(prop)) {
119: return constraints.get(prop);
120: } else {
121: return Collections.emptyList();
122: }
123: }
124: }