Skip to content

Commit fe8eaae

Browse files
soerenreichardts1ck
andcommitted
Use Nodes#nodeSchema in arrow import
Co-authored-by: Martin Junghanns <martin.junghanns@neotechnology.com>
1 parent d9f4dd4 commit fe8eaae

File tree

5 files changed

+24
-19
lines changed

5 files changed

+24
-19
lines changed

core/src/main/java/org/neo4j/gds/core/loading/CSRGraphStoreUtil.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.neo4j.gds.core.loading;
2121

2222
import org.jetbrains.annotations.NotNull;
23-
import org.neo4j.gds.NodeLabel;
2423
import org.neo4j.gds.RelationshipType;
2524
import org.neo4j.gds.api.DatabaseId;
2625
import org.neo4j.gds.api.Graph;
@@ -43,7 +42,6 @@
4342
import org.neo4j.gds.core.huge.HugeGraph;
4443
import org.neo4j.values.storable.NumberType;
4544

46-
import java.util.Collection;
4745
import java.util.Map;
4846
import java.util.Optional;
4947
import java.util.function.Function;
@@ -203,25 +201,12 @@ public static void extractNodeProperties(
203201
nodeImportResultBuilder.properties(propertyStoreBuilder.build());
204202
}
205203

204+
// TODO: remove this method
206205
public static GraphSchema computeGraphSchema(
207206
Nodes nodes,
208-
Function<NodeLabel, Collection<String>> propertiesByLabel,
209207
RelationshipImportResult relationshipImportResult
210208
) {
211-
var nodeProperties = nodes.properties().properties();
212-
213-
var nodeSchema = NodeSchema.empty();
214-
for (var label : nodes.idMap().availableNodeLabels()) {
215-
var entry = nodeSchema.getOrCreateLabel(label);
216-
for (var propertyKey : propertiesByLabel.apply(label)) {
217-
entry.addProperty(
218-
propertyKey,
219-
nodeProperties.get(propertyKey).propertySchema()
220-
);
221-
}
222-
}
223-
nodes.idMap().availableNodeLabels().forEach(nodeSchema::getOrCreateLabel);
224-
209+
var nodeSchema = nodes.schema();
225210
var relationshipSchema = RelationshipSchema.empty();
226211

227212
relationshipImportResult.importResults().forEach(((relationshipType, singleTypeRelationshipImportResult) -> {

core/src/main/java/org/neo4j/gds/core/loading/CypherFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ protected GraphSchema computeGraphSchema(
124124
) {
125125
return CSRGraphStoreUtil.computeGraphSchema(
126126
nodes,
127-
(__) -> nodes.properties().keySet(),
128127
relationshipImportResult
129128
);
130129
}

core/src/main/java/org/neo4j/gds/core/loading/LazyIdMapBuilder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.neo4j.gds.api.IdMap;
2424
import org.neo4j.gds.api.PartialIdMap;
2525
import org.neo4j.gds.api.properties.nodes.NodePropertyValues;
26+
import org.neo4j.gds.api.schema.NodeSchema;
2627
import org.neo4j.gds.core.loading.construction.GraphFactory;
2728
import org.neo4j.gds.core.loading.construction.NodeLabelToken;
2829
import org.neo4j.gds.core.loading.construction.NodesBuilder;
@@ -110,6 +111,8 @@ public interface HighLimitIdMapAndProperties {
110111

111112
PartialIdMap intermediateIdMap();
112113

114+
NodeSchema schema();
115+
113116
Optional<Map<String, NodePropertyValues>> nodeProperties();
114117
}
115118

@@ -141,6 +144,7 @@ public OptionalLong rootNodeCount() {
141144
.builder()
142145
.idMap(idMap)
143146
.intermediateIdMap(partialIdMap)
147+
.schema(nodes.schema())
144148
.nodeProperties(nodes.properties().propertyValues())
145149
.build();
146150
}

core/src/main/java/org/neo4j/gds/core/loading/NativeFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,6 @@ protected GraphSchema computeGraphSchema(
301301
) {
302302
return CSRGraphStoreUtil.computeGraphSchema(
303303
nodes,
304-
(label) -> storeConfig.nodeProjections().projections().get(label).properties().propertyKeys(),
305304
relationshipImportResult
306305
);
307306
}

core/src/main/java/org/neo4j/gds/core/loading/Nodes.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.neo4j.gds.annotation.ValueClass;
2525
import org.neo4j.gds.api.IdMap;
2626
import org.neo4j.gds.api.PropertyState;
27+
import org.neo4j.gds.api.properties.nodes.ImmutableNodeProperty;
2728
import org.neo4j.gds.api.properties.nodes.NodeProperty;
2829
import org.neo4j.gds.api.properties.nodes.NodePropertyStore;
2930
import org.neo4j.gds.api.properties.nodes.NodePropertyValues;
@@ -54,6 +55,23 @@ static Nodes of(IdMap idmap, NodePropertyStore nodePropertyStore) {
5455
return ImmutableNodes.of(NodeSchema.empty(), idmap, nodePropertyStore);
5556
}
5657

58+
static Nodes of(IdMap idMap, NodeSchema nodeSchema, Map<String, NodePropertyValues> properties, PropertyState propertyState) {
59+
var nodePropertyStoreBuilder = NodePropertyStore.builder();
60+
61+
nodeSchema.availableLabels().forEach(nodeLabel -> {
62+
var propertiesForLabel = nodeSchema.get(nodeLabel).properties();
63+
propertiesForLabel.forEach((propertyKey, propertySchema) -> nodePropertyStoreBuilder.putProperty(propertyKey,
64+
ImmutableNodeProperty
65+
.builder()
66+
.propertySchema(propertySchema)
67+
.values(properties.get(propertyKey))
68+
.build()
69+
));
70+
});
71+
72+
return ImmutableNodes.of(nodeSchema, idMap, nodePropertyStoreBuilder.build());
73+
}
74+
5775
static Nodes of(IdMap idMap, Map<PropertyMapping, NodePropertyValues> properties, PropertyState propertyState) {
5876
NodePropertyStore.Builder builder = NodePropertyStore.builder();
5977
properties.forEach((mapping, nodeProperties) -> builder.putProperty(

0 commit comments

Comments
 (0)