001/**
002 * Copyright (C) 2007 - 2016, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package org.dllearner.utilities.owl;
020
021import java.util.Collections;
022import java.util.Set;
023
024import org.semanticweb.owlapi.model.OWLClass;
025import org.semanticweb.owlapi.model.OWLClassExpression;
026import org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx;
027import org.semanticweb.owlapi.model.OWLDataAllValuesFrom;
028import org.semanticweb.owlapi.model.OWLDataExactCardinality;
029import org.semanticweb.owlapi.model.OWLDataHasValue;
030import org.semanticweb.owlapi.model.OWLDataMaxCardinality;
031import org.semanticweb.owlapi.model.OWLDataMinCardinality;
032import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom;
033import org.semanticweb.owlapi.model.OWLObjectAllValuesFrom;
034import org.semanticweb.owlapi.model.OWLObjectComplementOf;
035import org.semanticweb.owlapi.model.OWLObjectExactCardinality;
036import org.semanticweb.owlapi.model.OWLObjectHasSelf;
037import org.semanticweb.owlapi.model.OWLObjectHasValue;
038import org.semanticweb.owlapi.model.OWLObjectIntersectionOf;
039import org.semanticweb.owlapi.model.OWLObjectMaxCardinality;
040import org.semanticweb.owlapi.model.OWLObjectMinCardinality;
041import org.semanticweb.owlapi.model.OWLObjectOneOf;
042import org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom;
043import org.semanticweb.owlapi.model.OWLObjectUnionOf;
044
045/**
046 * Returns all directly connected child class expressions.
047 * 
048 * @author Lorenz Buehmann
049 *
050 */
051public class OWLClassExpressionChildrenCollector implements OWLClassExpressionVisitorEx<Set<OWLClassExpression>> {
052
053        /* (non-Javadoc)
054         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLClass)
055         */
056        @Override
057        public Set<OWLClassExpression> visit(OWLClass ce) {
058                return Collections.emptySet();
059        }
060
061        /* (non-Javadoc)
062         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectIntersectionOf)
063         */
064        @Override
065        public Set<OWLClassExpression> visit(OWLObjectIntersectionOf ce) {
066                return ce.getOperands();
067        }
068
069        /* (non-Javadoc)
070         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectUnionOf)
071         */
072        @Override
073        public Set<OWLClassExpression> visit(OWLObjectUnionOf ce) {
074                return ce.getOperands();
075        }
076
077        /* (non-Javadoc)
078         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectComplementOf)
079         */
080        @Override
081        public Set<OWLClassExpression> visit(OWLObjectComplementOf ce) {
082                return Collections.singleton(ce.getOperand());
083        }
084
085        /* (non-Javadoc)
086         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom)
087         */
088        @Override
089        public Set<OWLClassExpression> visit(OWLObjectSomeValuesFrom ce) {
090                return Collections.singleton(ce.getFiller());
091        }
092
093        /* (non-Javadoc)
094         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectAllValuesFrom)
095         */
096        @Override
097        public Set<OWLClassExpression> visit(OWLObjectAllValuesFrom ce) {
098                return Collections.singleton(ce.getFiller());
099        }
100
101        /* (non-Javadoc)
102         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectHasValue)
103         */
104        @Override
105        public Set<OWLClassExpression> visit(OWLObjectHasValue ce) {
106                return Collections.emptySet();
107        }
108
109        /* (non-Javadoc)
110         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectMinCardinality)
111         */
112        @Override
113        public Set<OWLClassExpression> visit(OWLObjectMinCardinality ce) {
114                return Collections.singleton(ce.getFiller());
115        }
116
117        /* (non-Javadoc)
118         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectExactCardinality)
119         */
120        @Override
121        public Set<OWLClassExpression> visit(OWLObjectExactCardinality ce) {
122                return Collections.singleton(ce.getFiller());
123        }
124
125        /* (non-Javadoc)
126         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectMaxCardinality)
127         */
128        @Override
129        public Set<OWLClassExpression> visit(OWLObjectMaxCardinality ce) {
130                return Collections.singleton(ce.getFiller());
131        }
132
133        /* (non-Javadoc)
134         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectHasSelf)
135         */
136        @Override
137        public Set<OWLClassExpression> visit(OWLObjectHasSelf ce) {
138                return Collections.emptySet();
139        }
140
141        /* (non-Javadoc)
142         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLObjectOneOf)
143         */
144        @Override
145        public Set<OWLClassExpression> visit(OWLObjectOneOf ce) {
146                return Collections.emptySet();
147        }
148
149        /* (non-Javadoc)
150         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataSomeValuesFrom)
151         */
152        @Override
153        public Set<OWLClassExpression> visit(OWLDataSomeValuesFrom ce) {
154                return Collections.emptySet();
155        }
156
157        /* (non-Javadoc)
158         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataAllValuesFrom)
159         */
160        @Override
161        public Set<OWLClassExpression> visit(OWLDataAllValuesFrom ce) {
162                return Collections.emptySet();
163        }
164
165        /* (non-Javadoc)
166         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataHasValue)
167         */
168        @Override
169        public Set<OWLClassExpression> visit(OWLDataHasValue ce) {
170                return Collections.emptySet();
171        }
172
173        /* (non-Javadoc)
174         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataMinCardinality)
175         */
176        @Override
177        public Set<OWLClassExpression> visit(OWLDataMinCardinality ce) {
178                return Collections.emptySet();
179        }
180
181        /* (non-Javadoc)
182         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataExactCardinality)
183         */
184        @Override
185        public Set<OWLClassExpression> visit(OWLDataExactCardinality ce) {
186                return Collections.emptySet();
187        }
188
189        /* (non-Javadoc)
190         * @see org.semanticweb.owlapi.model.OWLClassExpressionVisitorEx#visit(org.semanticweb.owlapi.model.OWLDataMaxCardinality)
191         */
192        @Override
193        public Set<OWLClassExpression> visit(OWLDataMaxCardinality ce) {
194                return Collections.emptySet();
195        }
196
197}