Class ArcLabelledImmutableGraph
- All Implemented Interfaces:
FlyweightPrototype<ImmutableGraph>
- Direct Known Subclasses:
ArcLabelledImmutableSequentialGraph
,ArcRelabelledImmutableGraph
,BitStreamArcLabelledImmutableGraph
,UnionArcLabelledImmutableGraph
The main purpose of this class is that of override covariantly the return
type of nodeIterator()
and nodeIterator(long)
so that
it is an ArcLabelledNodeIterator
, and the return type of
all static load methods and of copy()
so that it is an ArcLabelledImmutableGraph
(the
methods themselves just delegate to the corresponding method in ImmutableGraph
).
The only additional instance methods are labelBigArray(long)
and prototype()
.
Saving labels
A subclass of this class may implement
store(ArcLabelledImmutableGraph, CharSequence, CharSequence, ProgressLogger)
;store(ArcLabelledImmutableGraph, CharSequence, CharSequence)
.
These methods must save the labels of the given arc-labelled graph using the first given character
sequence as a basename, and a suitable property file using the second given basename. Note that the graph
will not be saved—use the store()
method of an ImmutableGraph
implementation for that purpose.
For istance, assuming g
is an arc-labelled graph the idiomatic way
of storing it on disk using BVGraph
for the underlying graph and
BitStreamArcLabelledImmutableGraph
for the labels is
BVGraph.store(g, "foo"); BitStreamArcLabelledImmutableGraph.store(g, "bar", "foo");
Underlying graphs
Often, implementations of this class will just wrap an underlying graph (i.e.,
an instance of ImmutableGraph
). In that case, we suggest that if the implementation
uses property files the basename of the underlying graph is specified using the property
key UNDERLYINGGRAPH_PROPERTY_KEY
. If the basename must be generated starting
from the arc-labelled graph basename, we suggest to just add at the end the string
UNDERLYINGGRAPH_SUFFIX
.
-
Nested Class Summary
Nested classes/interfaces inherited from class it.unimi.dsi.big.webgraph.ImmutableGraph
ImmutableGraph.LoadMethod
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The standard property key for the underlying graph.static final String
The standard suffix added to basenames in order to give a basename to the underlying graph, when needed.Fields inherited from class it.unimi.dsi.big.webgraph.ImmutableGraph
GRAPHCLASS_PROPERTY_KEY, NUMBER_OF_THREADS_PROPERTY, PROPERTIES_EXTENSION
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract ArcLabelledImmutableGraph
copy()
Returns a flyweight copy of this immutable graph.boolean
Compare this immutable graph to another object.Label[][]
labelBigArray
(long x) Returns a reference to an array containing the labels of the arcs going out of a given node in the same order as the order in which the corresponding successors are returned bysuccessors(long)
.static ArcLabelledImmutableGraph
load
(CharSequence basename) static ArcLabelledImmutableGraph
load
(CharSequence basename, ProgressLogger pl) static ArcLabelledImmutableGraph
loadOffline
(CharSequence basename) static ArcLabelledImmutableGraph
loadOffline
(CharSequence basename, ProgressLogger pl) static ArcLabelledImmutableGraph
loadOnce
(InputStream is) static ArcLabelledImmutableGraph
loadSequential
(CharSequence basename) Deprecated.static ArcLabelledImmutableGraph
loadSequential
(CharSequence basename, ProgressLogger pl) Deprecated.Returns a node iterator for scanning the graph sequentially, starting from the first node.nodeIterator
(long from) Returns a node iterator for scanning the graph sequentially, starting from the given node.abstract Label
Returns a prototype of the labels used by this graph.successors
(long x) Returns a lazy iterator over the successors of a given node.toString()
Methods inherited from class it.unimi.dsi.big.webgraph.ImmutableGraph
basename, hasCopiableIterators, hashCode, intNumNodes, load, loadMapped, loadMapped, numArcs, numNodes, outdegree, outdegrees, randomAccess, splitNodeIterators, store, store, successorBigArray, wrap, wrap
-
Field Details
-
UNDERLYINGGRAPH_PROPERTY_KEY
The standard property key for the underlying graph. All implementations decorating with labels an underlying graph are strongly encouraged to use this property name to specify the basename of the underlying graph.- See Also:
-
UNDERLYINGGRAPH_SUFFIX
The standard suffix added to basenames in order to give a basename to the underlying graph, when needed.- See Also:
-
-
Constructor Details
-
ArcLabelledImmutableGraph
public ArcLabelledImmutableGraph()
-
-
Method Details
-
copy
Description copied from class:ImmutableGraph
Returns a flyweight copy of this immutable graph.- Specified by:
copy
in interfaceFlyweightPrototype<ImmutableGraph>
- Specified by:
copy
in classImmutableGraph
- Returns:
- a flyweight copy of this immutable graph.
- See Also:
-
nodeIterator
Description copied from class:ImmutableGraph
Returns a node iterator for scanning the graph sequentially, starting from the first node.- Overrides:
nodeIterator
in classImmutableGraph
- Returns:
- a
NodeIterator
for accessing nodes and successors sequentially.
-
nodeIterator
Returns a node iterator for scanning the graph sequentially, starting from the given node.- Overrides:
nodeIterator
in classImmutableGraph
- Parameters:
from
- the node from which the iterator will iterate.- Returns:
- an
ArcLabelledNodeIterator
for accessing nodes, successors and their labels sequentially. - See Also:
- Implementation Specification:
- This implementation strengthens that provided in
ImmutableGraph
, but calls the labelled random-access methodsuccessors(long)
.
-
successors
Description copied from class:ImmutableGraph
Returns a lazy iterator over the successors of a given node. The iteration terminates when -1 is returned.- Overrides:
successors
in classImmutableGraph
- Parameters:
x
- a node.- Returns:
- a lazy iterator over the successors of the node.
-
prototype
Returns a prototype of the labels used by this graph. The prototype can be used to produce new copies, but must not be modified by the caller.- Returns:
- a prototype for the labels of this graph.
-
labelBigArray
Returns a reference to an array containing the labels of the arcs going out of a given node in the same order as the order in which the corresponding successors are returned bysuccessors(long)
.The returned array may contain more entries than the outdegree of
x
. However, only those with indices from 0 (inclusive) to the outdegree ofx
(exclusive) contain valid data.- Returns:
- an array whose first elements are the labels of the arcs going out of
x
; the array must not be modified by the caller. - Implementation Specification:
- This implementation just unwrap the iterator returned by
successors(long)
and writes in a newly allocated array copies of the labels returned byArcLabelledNodeIterator.LabelledArcIterator.label()
.
-
loadSequential
@Deprecated public static ArcLabelledImmutableGraph loadSequential(CharSequence basename) throws IOException Deprecated.- Throws:
IOException
-
loadSequential
@Deprecated public static ArcLabelledImmutableGraph loadSequential(CharSequence basename, ProgressLogger pl) throws IOException Deprecated.- Throws:
IOException
-
loadOffline
- Throws:
IOException
-
loadOffline
public static ArcLabelledImmutableGraph loadOffline(CharSequence basename, ProgressLogger pl) throws IOException - Throws:
IOException
-
load
- Throws:
IOException
-
load
public static ArcLabelledImmutableGraph load(CharSequence basename, ProgressLogger pl) throws IOException - Throws:
IOException
-
loadOnce
- Throws:
IOException
-
toString
- Overrides:
toString
in classImmutableGraph
-
equals
Description copied from class:ImmutableGraph
Compare this immutable graph to another object.- Overrides:
equals
in classImmutableGraph
- Returns:
- true iff the given object is an immutable graph of the same size, and
the successor list of every node of this graph is equal to the successor list of the corresponding node of
o
.
-