edu.stanford.nlp.graph.Graph Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stanford-corenlp Show documentation
Show all versions of stanford-corenlp Show documentation
Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. It provides the foundational building blocks for higher level text understanding applications.
package edu.stanford.nlp.graph;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
*
* @author Sonal Gupta
* @param Type of the vertices
* @param Type of the edges
*/
public interface Graph extends Serializable {
/**
* Adds vertices (if not already in the graph) and the edge between them.
* (If the graph is undirected, the choice of which vertex to call
* source and dest is arbitrary.)
*
* @param source
* @param dest
* @param data
*/
public abstract void add(V source, V dest, E data);
/**
* For adding a zero degree vertex
*
* @param v
*/
public abstract boolean addVertex(V v);
public abstract boolean removeEdges(V source, V dest);
public abstract boolean removeEdge(V source, V dest, E data);
/**
* remove a vertex (and its edges) from the graph.
*
* @param vertex
* @return true if successfully removes the node
*/
public abstract boolean removeVertex(V vertex);
public abstract boolean removeVertices(Collection vertices);
public abstract int getNumVertices();
/**
* for undirected graph, it is just the edges from the node
* @param v
*/
public abstract List getOutgoingEdges(V v);
/**
* for undirected graph, it is just the edges from the node
* @param v
*/
public abstract List getIncomingEdges(V v);
public abstract int getNumEdges();
/**
* for undirected graph, it is just the neighbors
* @param vertex
*/
public abstract Set getParents(V vertex);
/**
* for undirected graph, it is just the neighbors
* @param vertex
*/
public abstract Set getChildren(V vertex);
public abstract Set getNeighbors(V v);
/**
* clears the graph, removes all edges and nodes
*/
public abstract void clear();
public abstract boolean containsVertex(V v);
/**
* only checks if there is an edge from source to dest. To check if it is
* connected in either direction, use isNeighbor
*
* @param source
* @param dest
*/
public abstract boolean isEdge(V source, V dest);
public abstract boolean isNeighbor(V source, V dest);
public abstract Set getAllVertices();
public abstract List getAllEdges();
/**
* False if there are any vertices in the graph, true otherwise. Does not care
* about the number of edges.
*/
public abstract boolean isEmpty();
/**
* Deletes nodes with zero incoming and zero outgoing edges
*/
public abstract void removeZeroDegreeNodes();
public abstract List getEdges(V source, V dest);
/**
* for undirected graph, it should just be the degree
* @param vertex
*/
public abstract int getInDegree(V vertex);
public abstract int getOutDegree(V vertex);
public abstract List> getConnectedComponents();
}