/* $Id: IsGraph.java,v 1.18 2002/05/23 22:30:14 jantos Exp $ * * Copyright (c) 2001 - 2002 Cycorp, Inc. All rights reserved. * * This software is the proprietary information of Cycorp, Inc. * Use is subject to license terms. * */ package com.cyc.blue.graph; import java.util.Iterator; import java.util.Set; /** * Implement to obtain the ability to be used as a graph. * * @author John Jantos * @date 2001/08/09 * @version $Id: IsGraph.java,v 1.18 2002/05/23 22:30:14 jantos Exp $ */ public interface IsGraph { //////////////////////////////////////////////////////////////////////////////// // general methods /** clears this graph by removing all nodes and edges. */ public void clear(); //////////////////////////////////////////////////////////////////////////////// // methods for nodes /** sets the factory that nodes will be created by. * @param _nodeFactory */ public void setNodeFactory(IsNodeFactory _nodeFactory); /** gets the factory that nodes are created by. * @return the node factory. */ public IsNodeFactory getNodeFactory(); /** sets the factory that edges will be created by. * @param _edgeFactory */ public void setEdgeFactory(IsEdgeFactory _edgeFactory); /** gets the factory that edges are created by. * @return the edge factory. */ public IsEdgeFactory getEdgeFactory(); /** instantiates a new node * @param _nodeCore the new node's core object. * @return the new node. */ public IsNode instantiateNode(Object _nodeCore); /** finds a node by its core object. * @param _nodeCore the node's core object. * @return the exisitng node. */ public IsNode findNode(Object _nodeCore); /** checks whether a node is in this graph. * @param _node * @return true if it's in there, false if not. */ public boolean containsNode(IsNode _node); /** adds a node to this graph. the node should be an instance of the specified node class. * @param _node */ public void addNode(IsNode _node); /** removes a node from this graph. * @param _node */ public void removeNode(IsNode _node); /** gets a set of the nodes in this graph * @return a set containing the nodes in this graph. */ public Set getNodes(); /** gets an iterator over the nodes in this graph. * @return an iterator over the nodes in this graph. */ public Iterator nodesIterator(); //////////////////////////////////////////////////////////////////////////////// // methods for edges /** instantiates a new edge * @param _headNode * @param _tailNode * @param _relation * @return the new edge. */ public IsEdge instantiateEdge(IsNode _nodeIn, IsNode _nodeOut, Object _relation); /** finds an edge by its nodes and relation. * @param _headNode * @param _tailNode * @param _relation * @return the new edge. */ public IsEdge findEdge(IsNode _nodeIn, IsNode _nodeOut, Object _relation); /** checks whether the edge is in this graph * @param _edge * @return true if it's in there, false if not. */ public boolean containsEdge(IsEdge _edge); /** adds an edge to this graph * @param _edge */ public void addEdge(IsEdge _edge); /** removes an edge from this graph * @param _edge */ public void removeEdge(IsEdge _edge); /** gets a set of the edges in this graph * @return a set containing the edges in this graph. */ public Set getEdges(); /** gets an iterator over the edges in this graph. * @return an iterator over the edges in this graph. */ public Iterator edgesIterator(); //////////////////////////////////////////////////////////////////////////////// // methods for incidence /** gets an iterator over the edges incident to the specified node in this graph. * @param _node * @return an iterator over the edges. */ public Iterator incidentEdgesIterator(IsNode _node); /** gets an iterator over the edges with the specified node as head in this graph. * @param _node * @return an iterator over the edges. */ public Iterator incidentEdgesInIterator(IsNode _node); /** gets an iterator over the edges with the specified node as tail in this graph. * @param _node * @return an iterator over the edges. */ public Iterator incidentEdgesOutIterator(IsNode _node); /** gets an count of the edges incident to the specified node. * @param _node * @return an iterator over the edges. */ public int incidentEdgesCount(IsNode _node); /** gets an count of the edges with the specified node as head. * @param _node * @return an iterator over the edges. */ public int incidentEdgesInCount(IsNode _node); /** gets an count of the edges with the specified node as tail. * @param _node * @return an iterator over the edges. */ public int incidentEdgesOutCount(IsNode _node); }