Class TinkerGraph
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph
-
- All Implemented Interfaces:
AutoCloseable
,Graph
,Host
public final class TinkerGraph extends Object implements Graph
An in-memory (with optional persistence on calls toclose()
), reference implementation of the property graph interfaces provided by TinkerPop.- Author:
- Marko A. Rodriguez (http://markorodriguez.com), Stephen Mallette (http://stephen.genoprime.com)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TinkerGraph.DefaultIdManager
A default set ofTinkerGraph.IdManager
implementations for common identifier types.static interface
TinkerGraph.IdManager<T>
TinkerGraph will use an implementation of this interface to generate identifiers when a user does not supply them and to handle identifier conversions when querying to provide better flexibility with respect to handling different data types that mean the same thing.class
TinkerGraph.TinkerGraphEdgeFeatures
class
TinkerGraph.TinkerGraphFeatures
class
TinkerGraph.TinkerGraphGraphFeatures
class
TinkerGraph.TinkerGraphVertexFeatures
class
TinkerGraph.TinkerGraphVertexPropertyFeatures
-
Nested classes/interfaces inherited from interface org.apache.tinkerpop.gremlin.structure.Graph
Graph.Exceptions, Graph.Features, Graph.Hidden, Graph.OptIn, Graph.OptIns, Graph.OptOut, Graph.OptOuts, Graph.Variables
-
-
Field Summary
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Vertex
addVertex(Object... keyValues)
Add aVertex
to the graph given an optional series of key/value pairs.void
clear()
void
close()
This method only has an effect if theGREMLIN_TINKERGRAPH_GRAPH_LOCATION
is set, in which case the data in the graph is persisted to that location.GraphComputer
compute()
Generate aGraphComputer
using the default engine of the underlying graph system.<C extends GraphComputer>
Ccompute(Class<C> graphComputerClass)
Declare theGraphComputer
to use for OLAP operations on the graph.org.apache.commons.configuration2.Configuration
configuration()
Get theConfiguration
associated with the construction of this graph.<E extends Element>
voidcreateIndex(String key, Class<E> elementClass)
<E extends Element>
voiddropIndex(String key, Class<E> elementClass)
Iterator<Edge>
edges(Object... edgeIds)
Graph.Features
features()
Return TinkerGraph feature set.<E extends Element>
Set<String>getIndexedKeys(Class<E> elementClass)
<I extends Io>
Iio(Io.Builder<I> builder)
Construct a particularIo
implementation for reading and writing theGraph
and other data.static TinkerGraph
open()
Open a newTinkerGraph
instance.static TinkerGraph
open(org.apache.commons.configuration2.Configuration configuration)
Open a newTinkerGraph
instance.String
toString()
Transaction
tx()
Configure and control the transactions for those graphs that support this feature.Graph.Variables
variables()
A collection of globalGraph.Variables
associated with the graph.Iterator<Vertex>
vertices(Object... vertexIds)
-
-
-
Field Detail
-
GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER
public static final String GREMLIN_TINKERGRAPH_VERTEX_ID_MANAGER
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER
public static final String GREMLIN_TINKERGRAPH_EDGE_ID_MANAGER
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER
public static final String GREMLIN_TINKERGRAPH_VERTEX_PROPERTY_ID_MANAGER
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY
public static final String GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINALITY
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_GRAPH_LOCATION
public static final String GREMLIN_TINKERGRAPH_GRAPH_LOCATION
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_GRAPH_FORMAT
public static final String GREMLIN_TINKERGRAPH_GRAPH_FORMAT
- See Also:
- Constant Field Values
-
GREMLIN_TINKERGRAPH_ALLOW_NULL_PROPERTY_VALUES
public static final String GREMLIN_TINKERGRAPH_ALLOW_NULL_PROPERTY_VALUES
- See Also:
- Constant Field Values
-
currentId
protected AtomicLong currentId
-
variables
protected TinkerGraphVariables variables
-
graphComputerView
protected TinkerGraphComputerView graphComputerView
-
vertexIndex
protected org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIndex<TinkerVertex> vertexIndex
-
edgeIndex
protected org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIndex<TinkerEdge> edgeIndex
-
vertexIdManager
protected final TinkerGraph.IdManager<?> vertexIdManager
-
edgeIdManager
protected final TinkerGraph.IdManager<?> edgeIdManager
-
vertexPropertyIdManager
protected final TinkerGraph.IdManager<?> vertexPropertyIdManager
-
defaultVertexPropertyCardinality
protected final VertexProperty.Cardinality defaultVertexPropertyCardinality
-
allowNullPropertyValues
protected final boolean allowNullPropertyValues
-
-
Method Detail
-
open
public static TinkerGraph open()
Open a newTinkerGraph
instance. Reference Implementation Help: If aGraph
implementation does not require aConfiguration
(or perhaps has a default configuration) it can choose to implement a zero argumentopen()
method. This is an optional constructor method for TinkerGraph. It is not enforced by the Gremlin Test Suite.
-
open
public static TinkerGraph open(org.apache.commons.configuration2.Configuration configuration)
Open a newTinkerGraph
instance. Reference Implementation Help: This method is the one use by theGraphFactory
to instantiateGraph
instances. This method must be overridden for the Structure Test Suite to pass. Implementers have latitude in terms of how exceptions are handled within this method. Such exceptions will be considered implementation specific by the test suite as all test generate graph instances by way ofGraphFactory
. As such, the exceptions get generalized behind that facade and sinceGraphFactory
is the preferred method to opening graphs it will be consistent at that level.- Parameters:
configuration
- the configuration for the instance- Returns:
- a newly opened
Graph
-
compute
public <C extends GraphComputer> C compute(Class<C> graphComputerClass)
Description copied from interface:Graph
Declare theGraphComputer
to use for OLAP operations on the graph. If the graph does not support graph computer then anUnsupportedOperationException
is thrown.
-
compute
public GraphComputer compute()
Description copied from interface:Graph
Generate aGraphComputer
using the default engine of the underlying graph system. This is a shorthand method for the more involved method that usesGraph.compute(Class)
.
-
variables
public Graph.Variables variables()
Description copied from interface:Graph
A collection of globalGraph.Variables
associated with the graph. Variables are used for storing metadata about the graph.
-
io
public <I extends Io> I io(Io.Builder<I> builder)
Description copied from interface:Graph
Construct a particularIo
implementation for reading and writing theGraph
and other data. End-users will "select" theIo
implementation that they want to use by supplying theIo.Builder
that constructs it. In this way,Graph
vendors can supply theirIoRegistry
to that builder thus allowing for custom serializers to be auto-configured into theIo
instance. Registering custom serializers is particularly useful for those graphs that have complex types forElement
identifiers. For those graphs that do not need to register any custom serializers, the default implementation should suffice. If the default is overridden, take care to register the current graph via theIo.Builder.graph(Graph)
method.
-
clear
public void clear()
-
close
public void close()
This method only has an effect if theGREMLIN_TINKERGRAPH_GRAPH_LOCATION
is set, in which case the data in the graph is persisted to that location. This method may be called multiple times and does not release resources.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceGraph
-
tx
public Transaction tx()
Description copied from interface:Graph
Configure and control the transactions for those graphs that support this feature.
-
configuration
public org.apache.commons.configuration2.Configuration configuration()
Description copied from interface:Graph
Get theConfiguration
associated with the construction of this graph. Whatever configuration was passed toGraphFactory.open(Configuration)
is what should be returned by this method.- Specified by:
configuration
in interfaceGraph
- Returns:
- the configuration used during graph construction.
-
vertices
public Iterator<Vertex> vertices(Object... vertexIds)
Description copied from interface:Graph
Get theVertex
objects in this graph with the provided vertex ids orVertex
objects themselves. If no ids are provided, get all vertices. Note that a vertex identifier does not need to correspond to the actual id used in the graph. It needs to be a bit more flexible than that in that given theGraph.Features
around id support, multiple arguments might be applicable here. If the graph returntrue
forGraph.Features.ElementFeatures.supportsNumericIds()
then it should support filters as with:- g.vertices(v)
- g.vertices(v.id())
- g.vertices(1)
- g.vertices(1L)
- g.vertices(1.0d)
- g.vertices(1.0f)
- g.vertices("1")
true
forGraph.Features.ElementFeatures.supportsCustomIds()
()} then it should support filters as with:- g.vertices(v)
- g.vertices(v.id())
- g.vertices(v.id().toString())
true
forGraph.Features.ElementFeatures.supportsAnyIds()
()} then it should support filters as with:- g.vertices(v)
- g.vertices(v.id())
true
forGraph.Features.ElementFeatures.supportsStringIds()
()} then it should support filters as with:- g.vertices(v)
- g.vertices(v.id().toString())
- g.vertices("id")
true
forGraph.Features.ElementFeatures.supportsStringIds()
()} then it should support filters as with:- g.vertices(v)
- g.vertices(v.id().toString())
- g.vertices("id")
-
edges
public Iterator<Edge> edges(Object... edgeIds)
Description copied from interface:Graph
Get theEdge
objects in this graph with the provided edge ids orEdge
objects. If no ids are provided, get all edges. Note that an edge identifier does not need to correspond to the actual id used in the graph. It needs to be a bit more flexible than that in that given theGraph.Features
around id support, multiple arguments might be applicable here. If the graph returntrue
forGraph.Features.ElementFeatures.supportsNumericIds()
then it should support filters as with:- g.edges(e)
- g.edges(e.id())
- g.edges(1)
- g.edges(1L)
- g.edges(1.0d)
- g.edges(1.0f)
- g.edges("1")
true
forGraph.Features.ElementFeatures.supportsCustomIds()
()} then it should support filters as with:- g.edges(e)
- g.edges(e.id())
- g.edges(e.id().toString())
true
forGraph.Features.ElementFeatures.supportsAnyIds()
()} then it should support filters as with:- g.edges(e)
- g.edges(e.id())
true
forGraph.Features.ElementFeatures.supportsStringIds()
()} then it should support filters as with:- g.edges(e)
- g.edges(e.id().toString())
- g.edges("id")
-
features
public Graph.Features features()
Return TinkerGraph feature set. Reference Implementation Help: Implementers only need to implement features for which there are negative or instance configured features. By default, allGraph.Features
return true.
-
createIndex
public <E extends Element> void createIndex(String key, Class<E> elementClass)
Create an index for said element class (Vertex
orEdge
) and said property key. Whenever an element has the specified key mutated, the index is updated. When the index is created, all existing elements are indexed to ensure that they are captured by the index.- Type Parameters:
E
- The type of the element class- Parameters:
key
- the property key to indexelementClass
- the element class to index
-
dropIndex
public <E extends Element> void dropIndex(String key, Class<E> elementClass)
- Type Parameters:
E
- The type of the element class- Parameters:
key
- the property key to stop indexingelementClass
- the element class of the index to drop
-
-