Package org.neo4j.graphalgo.core.huge
Class NodeFilteredGraph
- java.lang.Object
-
- org.neo4j.graphalgo.api.GraphAdapter
-
- org.neo4j.graphalgo.api.CSRGraphAdapter
-
- org.neo4j.graphalgo.core.huge.NodeFilteredGraph
-
- All Implemented Interfaces:
BatchNodeIterable
,CSRGraph
,Degrees
,Graph
,IdMapping
,NodeIterator
,NodeMapping
,NodePropertyContainer
,RelationshipAccess
,RelationshipIterator
,RelationshipPredicate
,RelationshipProperties
public class NodeFilteredGraph extends CSRGraphAdapter
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.neo4j.graphalgo.api.BatchNodeIterable
BatchNodeIterable.IdIterable, BatchNodeIterable.IdIterator
-
Nested classes/interfaces inherited from interface org.neo4j.graphalgo.api.NodeMapping
NodeMapping.NodeLabelConsumer
-
-
Field Summary
-
Fields inherited from class org.neo4j.graphalgo.api.CSRGraphAdapter
graph
-
Fields inherited from interface org.neo4j.graphalgo.api.IdMapping
START_NODE_ID
-
Fields inherited from interface org.neo4j.graphalgo.api.NodeMapping
NOT_FOUND
-
-
Constructor Summary
Constructors Constructor Description NodeFilteredGraph(CSRGraph originalGraph, NodeMapping filteredIdMap)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<NodeLabel>
availableNodeLabels()
java.util.Collection<PrimitiveLongIterable>
batchIterables(long batchSize)
CSRGraph
concurrentCopy()
boolean
contains(long nodeId)
Returns true iff the nodeId is mapped, otherwise false.int
degree(long nodeId)
int
degreeWithoutParallelRelationships(long nodeId)
Much slower than just degree() because it may have to look up all relationships.boolean
exists(long sourceNodeId, long targetNodeId)
void
forEachNode(java.util.function.LongPredicate consumer)
Iterate over each nodeIdvoid
forEachNodeLabel(long nodeId, NodeMapping.NodeLabelConsumer consumer)
void
forEachRelationship(long nodeId, double fallbackValue, RelationshipWithPropertyConsumer consumer)
Calls the given consumer function for every relationship of a given node.void
forEachRelationship(long nodeId, RelationshipConsumer consumer)
Calls the given consumer function for every relationship of a given node.long
getFilteredMappedNodeId(long nodeId)
long
getIntermediateOriginalNodeId(long nodeId)
long
getTarget(long sourceNodeId, long index)
boolean
hasLabel(long nodeId, NodeLabel label)
long
highestNeoId()
long
nodeCount()
Number of mapped nodeIds.PrimitiveLongIterator
nodeIterator()
java.util.Set<NodeLabel>
nodeLabels(long nodeId)
NodeMapping
nodeMapping()
NodeProperties
nodeProperties(java.lang.String propertyKey)
Return the property values for a property key NOTE: Avoid using this on the hot path, favor caching the NodeProperties object when possibledouble
relationshipProperty(long sourceNodeId, long targetNodeId)
Returns the property value for a relationship defined by its source and target nodes.double
relationshipProperty(long sourceNodeId, long targetNodeId, double fallbackValue)
get value of property on relationship between source and target node idlong
rootNodeCount()
Number of mapped node ids in the root mapping.GraphSchema
schema()
long
toMappedNodeId(long neoNodeId)
Map original nodeId to inner nodeIdlong
toOriginalNodeId(long nodeId)
Map inner nodeId back to original nodeIdlong
toRootNodeId(long nodeId)
Maps an internal id to its root internal node id.-
Methods inherited from class org.neo4j.graphalgo.api.CSRGraphAdapter
relationshipTopologies
-
Methods inherited from class org.neo4j.graphalgo.api.GraphAdapter
availableNodeProperties, canRelease, graph, hasRelationshipProperty, isMultiGraph, isUndirected, relationshipCount, relationshipTypeFilteredGraph, release, releaseProperties, releaseTopology, streamRelationships
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.neo4j.graphalgo.api.Graph
canRelease, hasRelationshipProperty, isEmpty, isMultiGraph, isUndirected, relationshipCount, relationshipTypeFilteredGraph, release, releaseProperties, releaseTopology
-
Methods inherited from interface org.neo4j.graphalgo.api.IdMapping
cloneIdMapping
-
Methods inherited from interface org.neo4j.graphalgo.api.NodeMapping
withFilteredLabels
-
Methods inherited from interface org.neo4j.graphalgo.api.NodePropertyContainer
availableNodeProperties
-
Methods inherited from interface org.neo4j.graphalgo.api.RelationshipIterator
streamRelationships
-
-
-
-
Constructor Detail
-
NodeFilteredGraph
public NodeFilteredGraph(CSRGraph originalGraph, NodeMapping filteredIdMap)
-
-
Method Detail
-
nodeMapping
public NodeMapping nodeMapping()
-
schema
public GraphSchema schema()
- Specified by:
schema
in interfaceGraph
- Overrides:
schema
in classGraphAdapter
-
nodeIterator
public PrimitiveLongIterator nodeIterator()
- Specified by:
nodeIterator
in interfaceNodeIterator
- Overrides:
nodeIterator
in classGraphAdapter
-
batchIterables
public java.util.Collection<PrimitiveLongIterable> batchIterables(long batchSize)
- Specified by:
batchIterables
in interfaceBatchNodeIterable
- Overrides:
batchIterables
in classGraphAdapter
- Returns:
- a collection of iterables over every node, partitioned by the given batch size.
-
forEachNode
public void forEachNode(java.util.function.LongPredicate consumer)
Description copied from interface:NodeIterator
Iterate over each nodeId- Specified by:
forEachNode
in interfaceNodeIterator
- Overrides:
forEachNode
in classGraphAdapter
-
degree
public int degree(long nodeId)
- Specified by:
degree
in interfaceDegrees
- Overrides:
degree
in classGraphAdapter
-
degreeWithoutParallelRelationships
public int degreeWithoutParallelRelationships(long nodeId)
Description copied from interface:Degrees
Much slower than just degree() because it may have to look up all relationships. This is not thread-safe, so if this is called concurrently please useRelationshipIterator.concurrentCopy()
.- Specified by:
degreeWithoutParallelRelationships
in interfaceDegrees
- Overrides:
degreeWithoutParallelRelationships
in classGraphAdapter
- See Also:
Graph.isMultiGraph()
-
nodeCount
public long nodeCount()
Description copied from interface:IdMapping
Number of mapped nodeIds.- Specified by:
nodeCount
in interfaceIdMapping
- Overrides:
nodeCount
in classGraphAdapter
-
rootNodeCount
public long rootNodeCount()
Description copied from interface:IdMapping
Number of mapped node ids in the root mapping. This is necessary for nested (filtered) id mappings.- Specified by:
rootNodeCount
in interfaceIdMapping
- Overrides:
rootNodeCount
in classGraphAdapter
-
highestNeoId
public long highestNeoId()
- Specified by:
highestNeoId
in interfaceIdMapping
- Overrides:
highestNeoId
in classGraphAdapter
-
toMappedNodeId
public long toMappedNodeId(long neoNodeId)
Description copied from interface:IdMapping
Map original nodeId to inner nodeId- Specified by:
toMappedNodeId
in interfaceIdMapping
- Overrides:
toMappedNodeId
in classGraphAdapter
-
toRootNodeId
public long toRootNodeId(long nodeId)
Description copied from interface:IdMapping
Maps an internal id to its root internal node id. This is necessary for nested (filtered) id mappings. If this mapping is a nested mapping, this method returns the root node id of the parent mapping. For the root mapping this method returns the given node id.- Specified by:
toRootNodeId
in interfaceIdMapping
- Overrides:
toRootNodeId
in classGraphAdapter
-
contains
public boolean contains(long nodeId)
Description copied from interface:IdMapping
Returns true iff the nodeId is mapped, otherwise false.- Specified by:
contains
in interfaceIdMapping
- Overrides:
contains
in classGraphAdapter
-
toOriginalNodeId
public long toOriginalNodeId(long nodeId)
Description copied from interface:IdMapping
Map inner nodeId back to original nodeId- Specified by:
toOriginalNodeId
in interfaceIdMapping
- Overrides:
toOriginalNodeId
in classGraphAdapter
-
forEachRelationship
public void forEachRelationship(long nodeId, RelationshipConsumer consumer)
Description copied from interface:RelationshipIterator
Calls the given consumer function for every relationship of a given node.- Specified by:
forEachRelationship
in interfaceRelationshipIterator
- Overrides:
forEachRelationship
in classGraphAdapter
- Parameters:
nodeId
- id of the node for which to iterate relationshipsconsumer
- relationship consumer function
-
forEachRelationship
public void forEachRelationship(long nodeId, double fallbackValue, RelationshipWithPropertyConsumer consumer)
Description copied from interface:RelationshipIterator
Calls the given consumer function for every relationship of a given node. If the graph was loaded with a relationship property, the property value of the relationship will be passed into the consumer. Otherwise the given fallback value will be used.- Specified by:
forEachRelationship
in interfaceRelationshipIterator
- Overrides:
forEachRelationship
in classGraphAdapter
- Parameters:
nodeId
- id of the node for which to iterate relationshipsfallbackValue
- value used as relationship property if no properties were loadedconsumer
- relationship consumer function
-
getTarget
public long getTarget(long sourceNodeId, long index)
- Specified by:
getTarget
in interfaceRelationshipAccess
- Overrides:
getTarget
in classGraphAdapter
-
getFilteredMappedNodeId
public long getFilteredMappedNodeId(long nodeId)
-
getIntermediateOriginalNodeId
public long getIntermediateOriginalNodeId(long nodeId)
-
exists
public boolean exists(long sourceNodeId, long targetNodeId)
- Specified by:
exists
in interfaceRelationshipPredicate
- Overrides:
exists
in classGraphAdapter
-
relationshipProperty
public double relationshipProperty(long sourceNodeId, long targetNodeId, double fallbackValue)
Description copied from interface:RelationshipProperties
get value of property on relationship between source and target node id- Specified by:
relationshipProperty
in interfaceRelationshipProperties
- Overrides:
relationshipProperty
in classGraphAdapter
- Parameters:
sourceNodeId
- source nodetargetNodeId
- target nodefallbackValue
- value to use if relationship has no property value- Returns:
- the property value
-
relationshipProperty
public double relationshipProperty(long sourceNodeId, long targetNodeId)
Description copied from interface:RelationshipProperties
Returns the property value for a relationship defined by its source and target nodes.- Specified by:
relationshipProperty
in interfaceRelationshipProperties
- Overrides:
relationshipProperty
in classGraphAdapter
-
concurrentCopy
public CSRGraph concurrentCopy()
- Specified by:
concurrentCopy
in interfaceCSRGraph
- Specified by:
concurrentCopy
in interfaceGraph
- Specified by:
concurrentCopy
in interfaceRelationshipIterator
- Overrides:
concurrentCopy
in classCSRGraphAdapter
- Returns:
- a copy of this iterator that reuses new cursors internally, so that iterations happen independent from other iterations.
-
availableNodeLabels
public java.util.Set<NodeLabel> availableNodeLabels()
- Specified by:
availableNodeLabels
in interfaceNodeMapping
- Overrides:
availableNodeLabels
in classGraphAdapter
-
nodeLabels
public java.util.Set<NodeLabel> nodeLabels(long nodeId)
- Specified by:
nodeLabels
in interfaceNodeMapping
- Overrides:
nodeLabels
in classGraphAdapter
-
hasLabel
public boolean hasLabel(long nodeId, NodeLabel label)
- Specified by:
hasLabel
in interfaceNodeMapping
- Overrides:
hasLabel
in classGraphAdapter
-
forEachNodeLabel
public void forEachNodeLabel(long nodeId, NodeMapping.NodeLabelConsumer consumer)
- Specified by:
forEachNodeLabel
in interfaceNodeMapping
- Overrides:
forEachNodeLabel
in classGraphAdapter
-
nodeProperties
public NodeProperties nodeProperties(java.lang.String propertyKey)
Description copied from interface:NodePropertyContainer
Return the property values for a property key NOTE: Avoid using this on the hot path, favor caching the NodeProperties object when possible- Specified by:
nodeProperties
in interfaceNodePropertyContainer
- Overrides:
nodeProperties
in classGraphAdapter
- Parameters:
propertyKey
- the node property key- Returns:
- the values associated with that key
-
-