org.semanticweb.owlapi.reasoner.impl.DefaultNode Maven / Gradle / Ivy
The newest version!
/*
* This file is part of the OWL API.
*
* The contents of this file are subject to the LGPL License, Version 3.0.
*
* Copyright (C) 2011, The University of Manchester
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*
* Alternatively, the contents of this file may be used under the terms of the Apache License, Version 2.0
* in which case, the provisions of the Apache License Version 2.0 are applicable instead of those above.
*
* Copyright 2011, University of Manchester
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.semanticweb.owlapi.reasoner.impl;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLDatatype;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.reasoner.Node;
import uk.ac.manchester.cs.owl.owlapi.OWLDataFactoryImpl;
/**
* Author: Matthew Horridge
* The University of Manchester
* Information Management Group
* Date: 05-Dec-2009
* @param the type of entities in the node
*/
public abstract class DefaultNode implements Node {
private static final OWLDataFactory DF = new OWLDataFactoryImpl(false, false);
protected static final OWLClass TOP_CLASS = DF.getOWLThing();
protected static final OWLClassNode TOP_NODE = new OWLClassNode(TOP_CLASS);
protected static final OWLClass BOTTOM_CLASS = DF.getOWLNothing();
protected static final OWLClassNode BOTTOM_NODE = new OWLClassNode(BOTTOM_CLASS);
protected static final OWLDataProperty TOP_DATA_PROPERTY = DF.getOWLTopDataProperty();
protected static final OWLDataPropertyNode TOP_DATA_NODE = new OWLDataPropertyNode(TOP_DATA_PROPERTY);
protected static final OWLDataProperty BOTTOM_DATA_PROPERTY = DF.getOWLBottomDataProperty();
protected static final OWLDataPropertyNode BOTTOM_DATA_NODE = new OWLDataPropertyNode(BOTTOM_DATA_PROPERTY);
protected static final OWLDatatype TOP_DATATYPE = DF.getTopDatatype();
protected static final OWLObjectProperty TOP_OBJECT_PROPERTY = DF.getOWLTopObjectProperty();
protected static final OWLObjectPropertyNode TOP_OBJECT_NODE = new OWLObjectPropertyNode(TOP_OBJECT_PROPERTY);
protected static final OWLObjectProperty BOTTOM_OBJECT_PROPERTY = DF.getOWLBottomObjectProperty();
protected static final OWLObjectPropertyNode BOTTOM_OBJECT_NODE = new OWLObjectPropertyNode(BOTTOM_OBJECT_PROPERTY);
private final Set entities = new HashSet(4);
/**
* @param entity the entity to add
*/
public DefaultNode(E entity) {
this.entities.add(entity);
}
/**
* @param entities the set of entities to add
*/
public DefaultNode(Set entities) {
this.entities.addAll(entities);
}
protected DefaultNode() {
}
protected abstract E getTopEntity();
protected abstract E getBottomEntity();
/**
* @param entity entity to be added
*/
public void add(E entity) {
entities.add(entity);
}
public boolean isTopNode() {
return entities.contains(getTopEntity());
}
public boolean isBottomNode() {
return entities.contains(getBottomEntity());
}
public Set getEntities() {
return entities;
}
public int getSize() {
return entities.size();
}
public boolean contains(E entity) {
return entities.contains(entity);
}
public Set getEntitiesMinus(E E) {
HashSet result = new HashSet(entities);
result.remove(E);
return result;
}
public Set getEntitiesMinusTop() {
return getEntitiesMinus(getTopEntity());
}
public Set getEntitiesMinusBottom() {
return getEntitiesMinus(getBottomEntity());
}
public boolean isSingleton() {
return entities.size() == 1;
}
public E getRepresentativeElement() {
if (!entities.isEmpty()) {
return entities.iterator().next();
}
else {
return null;
}
}
public Iterator iterator() {
return entities.iterator();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Node( ");
for (OWLObject entity : entities) {
sb.append(entity);
sb.append(" ");
}
sb.append(")");
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof Node)) {
return false;
}
Node> other = (Node>) obj;
return entities.equals(other.getEntities());
}
@Override
public int hashCode() {
return entities.hashCode();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy