This is an automated email from the ASF dual-hosted git repository.
xiaokang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-graphar.git
The following commit(s) were added to refs/heads/main by this push:
new 0cd3f0dd feat(java,info): add prefix for adj/pg and add datatype
parser test (#820)
0cd3f0dd is described below
commit 0cd3f0dd9971b3e4c6979bdec375bb4516e17fc8
Author: Xiaokang Yang <[email protected]>
AuthorDate: Fri Jan 16 10:17:08 2026 +0800
feat(java,info): add prefix for adj/pg and add datatype parser test (#820)
* add prefix for adj/pg and add datatype parser test
* fix prefix
---
.../apache/graphar/info/yaml/AdjacentListYaml.java | 6 +++-
.../graphar/info/yaml/PropertyGroupYaml.java | 14 +++++++-
.../apache/graphar/info/GraphInfoLoaderTest.java | 6 ++--
.../org/apache/graphar/info/GraphInfoTest.java | 41 +++++++++++++++++++++-
.../java/org/apache/graphar/info/PropertyTest.java | 19 ++++++++++
.../java/org/apache/graphar/info/TestUtil.java | 23 ++++++++----
6 files changed, 97 insertions(+), 12 deletions(-)
diff --git
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
index cb6ee2a8..63e4f2e1 100644
---
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
+++
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
@@ -44,10 +44,14 @@ public class AdjacentListYaml {
}
public AdjacentList toAdjacentList() {
+ String adjPrefix = prefix;
+ if (adjPrefix == null || adjPrefix.isEmpty()) {
+ adjPrefix = AdjListType.fromOrderedAndAlignedBy(ordered,
aligned_by) + "/";
+ }
return new AdjacentList(
AdjListType.fromOrderedAndAlignedBy(ordered, aligned_by),
FileType.fromString(file_type),
- prefix);
+ adjPrefix);
}
public boolean isOrdered() {
diff --git
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
index 72393218..e9ee846d 100644
---
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
+++
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
@@ -46,10 +46,22 @@ public class PropertyGroupYaml {
}
public PropertyGroup toPropertyGroup() {
+ String pgPrefix = prefix;
+ if (pgPrefix == null || pgPrefix.isEmpty()) {
+ StringBuilder prefixBuilder = new StringBuilder();
+ for (int i = 0; i < properties.size(); i++) {
+ if (i > 0) {
+ prefixBuilder.append("_");
+ }
+ prefixBuilder.append(properties.get(i).getName());
+ }
+ prefixBuilder.append("/");
+ pgPrefix = prefixBuilder.toString();
+ }
return new PropertyGroup(
properties.stream().map(PropertyYaml::toProperty).collect(Collectors.toList()),
FileType.fromString(file_type),
- prefix);
+ pgPrefix);
}
public List<PropertyYaml> getProperties() {
diff --git
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
index 3e4633b2..94187c42 100644
---
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
+++
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
@@ -42,7 +42,7 @@ public class GraphInfoLoaderTest {
@Test
public void testStringLoader() throws IOException {
- final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+ final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
GraphInfoLoader loader = new LocalFileSystemStringGraphInfoLoader();
final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
testGraphInfo(graphInfo);
@@ -50,7 +50,7 @@ public class GraphInfoLoaderTest {
@Test
public void testStreamLoader() throws IOException {
- final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+ final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
testGraphInfo(graphInfo);
@@ -58,7 +58,7 @@ public class GraphInfoLoaderTest {
@Test
public void testReaderLoader() throws IOException {
- final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+ final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
GraphInfoLoader loader = new LocalFileSystemReaderGraphInfoLoader();
final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
testGraphInfo(graphInfo);
diff --git
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
index 607e9805..fc931b60 100644
---
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
+++
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
@@ -42,6 +42,7 @@ public class GraphInfoTest {
private static VertexInfo personVertexInfo;
private static EdgeInfo knowsEdgeInfo;
private static URI GRAPH_PATH_URI;
+ private static URI PARUQET_GRAPH_PATH_URI;
// test not exist property group
private static final PropertyGroup notExistPg =
new PropertyGroup(
@@ -54,7 +55,8 @@ public class GraphInfoTest {
TestUtil.checkTestData();
// Always use real test data - fail if not available
- GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+ GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
+ PARUQET_GRAPH_PATH_URI = TestUtil.getParquetLdbcSampleGraphURI();
GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
try {
graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
@@ -510,4 +512,41 @@ public class GraphInfoTest {
graphInfo.getVersion().toString());
Assert.assertFalse(invalidEdgeGraphInfo.isValidated());
}
+
+ @Test
+ public void testParquetGraphInfo() {
+ GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
+ GraphInfo graphInfo;
+ try {
+ graphInfo = loader.loadGraphInfo(PARUQET_GRAPH_PATH_URI);
+ } catch (IOException e) {
+ throw new RuntimeException(
+ "Failed to load real test data from "
+ + PARUQET_GRAPH_PATH_URI
+ + ": "
+ + e.getMessage(),
+ e);
+ }
+ VertexInfo personVertexInfo = graphInfo.getVertexInfos().get(0);
+ EdgeInfo knowsEdgeInfo = graphInfo.getEdgeInfos().get(0);
+ // test vertex property
+ PropertyGroup firstName_lastName_gender =
personVertexInfo.getPropertyGroups().get(1);
+ Assert.assertEquals("firstName_lastName_gender/",
firstName_lastName_gender.getPrefix());
+ Assert.assertEquals(FileType.PARQUET,
firstName_lastName_gender.getFileType());
+ Assert.assertEquals(
+ URI.create("vertex/person/vertex_count"),
personVertexInfo.getVerticesNumFileUri());
+ // test edge property
+ PropertyGroup creationDate = knowsEdgeInfo.getPropertyGroups().get(0);
+ Assert.assertEquals("creationDate/", creationDate.getPrefix());
+ Assert.assertEquals(FileType.PARQUET, creationDate.getFileType());
+ // test adjlist
+ AdjacentList adjOrderBySource =
+ knowsEdgeInfo.getAdjacentList(AdjListType.ordered_by_source);
+ Assert.assertEquals(FileType.PARQUET, adjOrderBySource.getFileType());
+ Assert.assertEquals(AdjListType.ordered_by_source,
adjOrderBySource.getType());
+ Assert.assertEquals("ordered_by_source/",
adjOrderBySource.getPrefix());
+ Assert.assertEquals(
+
URI.create("edge/person_knows_person/ordered_by_source/adj_list/offset/"),
+ knowsEdgeInfo.getOffsetUri(AdjListType.ordered_by_source));
+ }
}
diff --git
a/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
b/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
index 78fa86d9..27f28bab 100644
---
a/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
+++
b/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
@@ -19,6 +19,9 @@
package org.apache.graphar.info;
+import java.io.IOException;
+import java.net.URI;
+import
org.apache.graphar.info.loader.impl.LocalFileSystemStringGraphInfoLoader;
import org.apache.graphar.info.type.DataType;
import org.junit.Assert;
import org.junit.Before;
@@ -35,6 +38,7 @@ public class PropertyTest {
idProperty = TestDataFactory.createIdProperty();
nameProperty = TestDataFactory.createProperty("name", DataType.STRING,
false, true);
optionalProperty = TestDataFactory.createProperty("optional",
DataType.STRING, false, true);
+ TestUtil.checkTestData();
}
@Test
@@ -171,4 +175,19 @@ public class PropertyTest {
TestVerificationUtils.verifyProperty(prop, "test", true, false);
Assert.assertEquals(DataType.INT32, prop.getDataType());
}
+
+ @Test
+ public void testLoadPropertyDateTypes() throws IOException {
+ String testDataRoot = TestUtil.getTestData();
+ String timestampEdge =
+ testDataRoot +
"/ldbc_sample/parquet/person_knows-timestamp_person.edge.yml";
+ LocalFileSystemStringGraphInfoLoader
localFileSystemStringGraphInfoLoader =
+ new LocalFileSystemStringGraphInfoLoader();
+ EdgeInfo edgeInfo =
+
localFileSystemStringGraphInfoLoader.loadEdgeInfo(URI.create(timestampEdge));
+ Assert.assertTrue(edgeInfo.dump().contains("data_type: timestamp"));
+ String dateEdge = testDataRoot +
"/ldbc_sample/parquet/person_knows-date_person.edge.yml";
+ edgeInfo =
localFileSystemStringGraphInfoLoader.loadEdgeInfo(URI.create(dateEdge));
+ Assert.assertTrue(edgeInfo.dump().contains("data_type: date"));
+ }
}
diff --git
a/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
b/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
index 0b703343..8a1aec6e 100644
--- a/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
+++ b/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
@@ -37,7 +37,10 @@ public class TestUtil {
static final String SAVE_DIR =
System.getProperty("test.output.dir", "target/test-output") + "/";
- private static final String LDBC_SAMPLE_GRAPH_PATH =
"/ldbc_sample/csv/ldbc_sample.graph.yml";
+ private static final String CSV_LDBC_SAMPLE_GRAPH_PATH =
+ "/ldbc_sample/csv/ldbc_sample.graph.yml";
+ private static final String PARQUET_LDBC_SAMPLE_GRAPH_PATH =
+ "/ldbc_sample/parquet/ldbc_sample.graph.yml";
private static final String LDBC_GRAPH_PATH =
"/ldbc/parquet/ldbc.graph.yml";
public static String getTestData() {
@@ -49,12 +52,20 @@ public class TestUtil {
return GAR_TEST_DATA != null && new
java.io.File(GAR_TEST_DATA).exists();
}
- public static String getLdbcSampleGraphPath() {
- return getTestData() + "/" + LDBC_SAMPLE_GRAPH_PATH;
+ public static String getCSVLdbcSampleGraphPath() {
+ return getTestData() + "/" + CSV_LDBC_SAMPLE_GRAPH_PATH;
}
- public static URI getLdbcSampleGraphURI() {
- return URI.create(getLdbcSampleGraphPath());
+ public static URI getCSVLdbcSampleGraphURI() {
+ return URI.create(getCSVLdbcSampleGraphPath());
+ }
+
+ public static String getParquetLdbcSampleGraphPath() {
+ return getTestData() + "/" + PARQUET_LDBC_SAMPLE_GRAPH_PATH;
+ }
+
+ public static URI getParquetLdbcSampleGraphURI() {
+ return URI.create(getParquetLdbcSampleGraphPath());
}
public static String getLdbcGraphPath() {
@@ -127,7 +138,7 @@ public class TestUtil {
try {
GraphInfoLoader loader =
new
org.apache.graphar.info.loader.impl.LocalFileSystemStreamGraphInfoLoader();
- return loader.loadGraphInfo(getLdbcSampleGraphURI());
+ return loader.loadGraphInfo(getCSVLdbcSampleGraphURI());
} catch (Exception e) {
throw new RuntimeException(
"Failed to load real LDBC sample data: " + e.getMessage(),
e);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]