All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticweb.owlapi.reasoner.Node Maven / Gradle / Ivy

There is a newer version: 5.5.1
Show 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;

import java.util.Set;

import org.semanticweb.owlapi.model.OWLObject;

/**
 * Represents a node (set) of entities. The entities in a node are equivalent to
 * each other. 
*

Nodes in hierarchies

In the OWL API, a reasoner treats a class * hierarchy, an object property hierarchy or a data property hierarchy as a * hierarchy (directed acyclic graph - DAG) of {@code Nodes}. Each node contains * entities that are equivalent to each other. A hierarchy contains a top * node, which is the ancestor of all nodes in the hierarchy, and a * bottom node In a class hierarchy, the nodes contain {@code OWLClass} * objects. The top node contains {@code owl:Thing} (and any other named classes * that are equivalent to {@code owl:Thing}). The bottom node contains * {@code owl:Nothing} (and any other named classes that are equivalent to * {@code owl:Nothing} - these classes are unsatisfiable In an object * property hierarchy, the nodes contain {@code OWLObjectProperty} objects. The * top node contains {@code owl:topObjectProperty} (and any other named object * properties that are equivalent to {@code owl:topObjectProperty}). The bottom * node contains {@code owl:bottomObjectProperty} (and any other named object * properties that are equivalent to {@code owl:bottomObjectProperty}).
* In a data property hierarchy, the nodes contain {@code OWLDataProperty} * objects. The top node contains {@code owl:topDataProperty} (and any other data * properties that are equivalent to {@code owl:topDataProperty} ). The bottom * node contains {@code owl:bottomDataProperty} (and any other data properties * that are equivalent to {@code owl:bottomDataProperty}).
*

Class Hierarchy Example

The figure below shows an example class * hierarchy. Each box in the hierarchy represents a {@code Node}. In this case * the top node contains {@code owl:Thing} and the bottom node contains * {@code owl:Nothing} because the nodes in the hierarchy are {@code OWLClass} * nodes. In this case, class {@code G} is equivalent to {@code owl:Thing} so it * appears as an entity in the top node. Similarly, class {@code K} is * unsatisfiable, so it is equivalent to {@code owl:Nothing} and therefore * appears in the bottom node containing {@code owl:Nothing}.
* hierarchy * * @author Matthew Horridge, The University of Manchester, Information * Management Group, Date: 03-Jul-2009 * @param * the type of elements represented in the Node */ public interface Node extends Iterable { /** * Determines if this node represents the top node (in a hierarchy). For a * named class node, the top node is the node that contains * {@code owl:Thing}. For an object property node, the top node is the node * that contains {@code owl:topObjectProperty}. For a data property node, the * top node is the node that contains {@code owl:topDataProperty} * * @return {@code true} if this node is an {@code OWLClass} node and it * contains {@code owl:Thing}.
* {@code true} if this node is an {@code OWLObjectProperty} node * and it contains {@code owl:topObjectProperty}.
* {@code true} if this node is an {@code OWLDataProperty} node and * it contains {@code owl:topDataProperty}.
* {@code false} if none of the above. */ boolean isTopNode(); /** * Determines if this node represents the bottom node (in a hierarchy). For * a named class node, the bottom node is the node that contains * {@code owl:Nothing}. For an object property node, the bottom node is the * node that contains {@code owl:bottomObjectProperty}. For a data property * node, the bottom node is the node that contains * {@code owl:bottomDataProperty} * * @return {@code true} if this node is an {@code OWLClass} node and it * contains {@code owl:Nothing}.
* {@code true} if this node is an {@code OWLObjectProperty} node * and it contains {@code owl:bottomObjectProperty}.
* {@code true} if this node is an {@code OWLDataProperty} node and * it contains {@code owl:bottomDataProperty}.
* {@code false} if none of the above. */ boolean isBottomNode(); /** * Gets the entities contained in this node. The entities are equivalent to * each other. * * @return The set of entities contained in this {@code Node}. */ Set getEntities(); /** * Gets the number of entities contained in this {@code Node}. * * @return The number of entities contained in this node. */ int getSize(); /** * Determines if this node contains the specified entity. * * @param entity * The entity to check for * @return {@code true} if this node contains {@code entity}, or * {@code false} if this node does not contain {@code entity} */ boolean contains(E entity); /** * Gets the entities contained in this node minus the specified entitie * {@code e}. This essentially returns the entities that are returned by * {@link #getEntities()} minus the specified entity {@code e} * * @param e * The entity that, is contained within this node, but should not be * included in the return set. * @return The set of entities that are contained in this node minus the * specified entity, {@code e}. If {@code e} is not contained within * this node then the full set of entities returned is the same as * that returned by {@link #getEntities()} */ Set getEntitiesMinus(E e); /** * Gets the entities contained in this node minus the top entity. For a node * of named classes the top entity is {@code owl:Thing}. For a node of object * properties the top entity is {@code owl:topObjectProperty}. For a node of * data properties the top entity is {@code owl:topDataProperty} * * @return The set of entities contained within this node minus the top * entity. If this node does not contain the top entity then the set * of entities returned is the same as that returned by * {@link #getEntities()}. */ Set getEntitiesMinusTop(); /** * Gets the entities contained in this node minus the bottom entity. For a * node of named classes the bottom entity is {@code owl:Nothing}. For a node * of object properties the bottom entity is * {@code owl:bottomObjectProperty}. For a node of data properties the bottom * entity is {@code owl:bottomDataProperty} * * @return The set of entities contained within this node minus the bottom * entity. If this node does not contain the bottom entity then the * set of entities returned is the same as that returned by * {@link #getEntities()}. */ Set getEntitiesMinusBottom(); /** * Determines if this {@code Node} contains just one entity. * * @return {@code true} if this {@code Node} contains just one entity, * otherwise {@code false} */ boolean isSingleton(); /** * Gets one of the entities contained in this entity set. If this is a * singleton set it will be the one and only entity. * * @return An entity from the set of entities contained within this node * @throws RuntimeException * if this node is empty (it does not contain any entities). */ E getRepresentativeElement(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy