package com.tinkerpop.blueprints; import java.util.Set; /** * A KeyIndexableGraph is a graph that supports basic index functionality around the key/value pairs of the elements of the graph. * By creating key indices for a particular property key, that key is indexed on all the elements of the graph. * This has ramifications for quick lookups on methods like getVertices(String, Object) and getEdges(String, Object). * * @author Marko A. Rodriguez (http://markorodriguez.com) */ public interface KeyIndexableGraph extends Graph { /** * Remove an automatic indexing structure associated with indexing provided key for element class. * * @param key the key to drop the index for * @param elementClass the element class that the index is for * @param <T> the element class specification */ public <T extends Element> void dropKeyIndex(String key, Class<T> elementClass); /** * Create an automatic indexing structure for indexing provided key for element class. * * @param key the key to create the index for * @param elementClass the element class that the index is for * @param indexParameters a collection of parameters for the underlying index implementation * @param <T> the element class specification */ public <T extends Element> void createKeyIndex(String key, Class<T> elementClass, final Parameter... indexParameters); /** * Return all the index keys associated with a particular element class. * * @param elementClass the element class that the index is for * @param <T> the element class specification * @return the indexed keys as a Set */ public <T extends Element> Set<String> getIndexedKeys(Class<T> elementClass); }